AS3 CookBook学习整理(二)

本文介绍了使用Flash AS3进行编程的实用技巧,包括调整影片对齐方式、判断客户端播放能力、数值处理、随机数生成及格式化等操作,并提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 我要改变影片的对齐方式

使用stage.align属性

stage.align的值是flash.display.StageAlign类的一个枚举。其值如下:

 

ValueVertical AlignmentHorizontal
StageAlign.TOPTopCenter
StageAlign.BOTTOMBottomCenter
StageAlign.LEFTCenterLeft
StageAlign.RIGHTCenterRight
StageAlign.TOP_LEFTTopLeft
StageAlign.TOP_RIGHTTopRight
StageAlign.BOTTOM_LEFTBottomLeft
StageAlign.BOTTOM_RIGHTBottomRight

 

package
{
    flash.display.Sprite;
    flash.display.StageAlign;
    flash.display.StageScaleMode;
     Sample1105Sprite
    {
         Sample1105()
        {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_RIGHT;
            
            .graphics.beginFill(0xFF0000);
            .graphics.drawRect(10,10,stage.stageWidth,stage.stageHeight);
            .graphics.endFill();            
        }
    }
}

2. 确定客户端是否能播放音频

使用flash.system.Capabilities的hasAudio判断是否支持音频,hasMP3判断是否能播放MP3

(flash.system.Capabilities.hasAudio && flash.system.Capabilities.hasMP3)
{
}
else
{
}

3. 提示用户改变播放器设置

使用flash.system.Security.showSettings()方法打开用户的Flash播放器设置对话框窗口

该方法接受一个flash.system.SecurityPanel枚举作为参数。对应功能如下:

SecurityPanel.DEFAULT 默认面板

SecurityPanel.CAMERA 摄像头面板

SecurityPanel.LOCAL_STORAGE 本地存储面板

SecurityPanel.MICROPHONE 话筒面板

SecurityPanel.PRIVACY 安全控制面板

SecurityPanel.SETTINGS_MANAGER 管理面板会打开浏览器进行更多设置

 {
    flash.display.Sprite;
    flash.system.Security;
    flash.system.SecurityPanel;
     Sample1117Sprite
    {
         Sample1117()
        {
            flash.system.Security.showSettings(flash.system.SecurityPanel.DEFAULT);
        }
    }
}

4. 对数值进行四舍五入或取近似值

用Math.round()进行四舍五入,Math.floor()和Math.ceil()进行上下近似值。NumberUtilities.round()方法可自定义取值

 {
    ascb.util.NumberUtilities;
    
    flash.display.Sprite;
     Sample1117Sprite
    {
         Sample1117()
        {
            (Math.round(234.56)); 
            (Math.floor(234.56)); 
            (Math.ceil(234.56));  
            
            (Math.round(123.456*100)/100);
            
            (Math.round(123.456/0.1)*0.1);
            
            (NumberUtilities.round(123.456,0.1)); 
            (NumberUtilities.round(123.456,6));   
            
        }
    }
}

5. 对数字和字符串进行格式化

用NumberFormat对象的format()与currencyFormat()方法。由于是第三方类库,测试过程中发现有些不完善。自己写了一个格式化货币的方法

 {
    flash.display.Sprite;
    
     Sample1118Sprite
    {
         Sample1118()
        {
            money:Number = 26591234569.5678;
            (formatString(money));
            i:int = 1234;
            (formatString(i));
            (formatString());
        }
         formatString(obj:Object):String
        {
            (obj    int||obj    uint||obj    Number)
            {
                money:Number = obj    Number;
                str:String = (Math.round(money/0.01) * 0.01).toString();
                _index:int = str.indexOf();
                cursor:int = 0;
                (_index>-1)
                {
                    cursor = _index;
                    str = str.substring(0,_index + 3);
                    (str.length < _index+3)
                    {
                        str = str + ;
                    }           
                }
                else
                {
                    cursor = str.length;
                    str = str+;
                }
                arrStr:Array = Array();
                (cursor-3>=0)
                {
                    arrStr.push(str.substr(cursor-3,3));
                    cursor = cursor-3;
                }
                (cursor>0)
                {
                    arrStr.push(str.substr(0,cursor));
                }
                arrStr.reverse();
                 arrStr.join(',') + str.substr(str.indexOf());
            }
            else
            {
                 obj.toString();
            }
        }   
    }
}

6. 生成随机数(猜硬币)

用NumberUtilities.random(0,1)方法产生随机数

 {
    ascb.util.NumberUtilities;
    
    flash.display.Sprite;
    flash.events.MouseEvent;
    flash.text.TextField;
    
     Sample1118Sprite
    {   
        label:TextField;
         Sample1118()
        {
            label = TextField();
            label.background = ;
            label.backgroundColor = 0xFF0000;
            label.textColor = 0xF7FCFF;
            label.autoSize = ;
            .addChild(label);
            sprite:Sprite = Sprite();
            sprite.graphics.beginFill(0xFFFF00);
            sprite.graphics.drawCircle(100,100,50);
            sprite.graphics.endFill();
            sprite.addEventListener(MouseEvent.CLICK,OnClick);
            .addChild(sprite);
        }
         OnClick(event:MouseEvent):
        {
            (NumberUtilities.random(0,1)==0)
            {
                label.text = ;
            }
            else
            {
                label.text = ;
            }
        }
    }
}

7. 生成随机数(骰子)

用NumberUtilities.random(1,6)方法产生随机数

 {
    ascb.util.NumberUtilities;
    flash.display.Sprite;
    flash.events.MouseEvent;
     Sample1119Sprite
    {   
        sprite:Sprite;
         Sample1119()
        {
            sprite = Sprite();
            .addChild(sprite);
            sprite.addEventListener(MouseEvent.CLICK,OnClick);
            OnClick(null);  
        }
        
         OnClick(event:MouseEvent):
        {
            sprite.graphics.clear();
            sprite.graphics.beginFill(0xFFFFFF);
            sprite.graphics.drawRect(0,0,50,50);
            sprite.graphics.endFill();
            randNum:int = NumberUtilities.random(1,6);
            sprite.graphics.beginFill(0x000000);
            (randNum==1)
            {       
                sprite.graphics.drawCircle(25,25,6);
            }
            else (randNum!=2)
            {
                sprite.graphics.drawCircle(8,8,6);
                sprite.graphics.drawCircle(42,42,6);
            }
            (randNum==3||randNum==5)
            {
                sprite.graphics.drawCircle(25,25,6);                
            }
            (randNum==4||randNum==5||randNum==6)
            {
                sprite.graphics.drawCircle(42,8,6); 
                sprite.graphics.drawCircle(8,42,6);
            }
            (randNum==2)
            {
                sprite.graphics.drawCircle(25,8,6);
                sprite.graphics.drawCircle(25,42,6);            
            }
            (randNum==6)
            {
                sprite.graphics.drawCircle(8,25,6);
                sprite.graphics.drawCircle(42,25,6);
            }
            sprite.graphics.endFill();
        }
    }
}

8. 生成唯一随机数(基于毫秒)

调用NumberUtilities.getUnique()得到当前时间(精确到毫秒)的唯一数字

 {
    ascb.util.NumberUtilities;
    flash.display.Sprite;
     Sample1119Sprite
    {   
         Sample1119()
        {
            (i:uint=0;i<10;i++)
            {
                (NumberUtilities.getUnique());
            }
        }
    }
}

9. 计算两点之间的距离

根据勾股定理,使用Math.pow()和Math.sqrt()联合计算

 {   
    flash.display.Sprite;
    flash.geom.Point;
     Sample1119Sprite
    {   
         Sample1119()
        {
            p1:Point = Point(10,20);
            p2:Point = Point(100,200);
            x:int = p1.x - p2.x;
            y:int = p1.y = p2.y;
            length:Number = Math.sqrt(Math.pow(x,2)+Math.pow(y,2));
            (length);
        }
    }
}

10. DisplayObject类结构图

flash.display包中包含Flash Player用于构建可视显示内容的核心类。DisplayObject类是可放在显示列表中的所有对象的基类

转载于:https://www.cnblogs.com/CoderWayne/archive/2010/07/15/1778036.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值