AS3 CookBook学习整理(六)

1. 在位图上应用滤镜

使用BitmapData类的applyFilter()

destBmp.applyFilter(sourceBitmapData, sourceRect, destPoint, filter);

sourceBitmapData -- 要使用的输入位图图像。源图像可以是另一个BitmapData对象,也可以引用当前BitmapData实例

sourceRect -- 定义要用作输入的源图像区域的矩形

destPoint -- 目标图像(当前BitmapData实例)中与源矩形的左上角对应的点

filter -- 用于执行过滤操作的滤镜对象

如果 BitmapData 对象和指定为 sourceBitmapData 参数的对象是同一对象,应用程序将使用该对象的临时副本来执行滤镜。为了获得最佳性能,请避免这种情况

可以直接定义Bitmap.filters属性,它不会直接接触BitmapData的像素数据,因为滤镜只应用在包装BitmapData的Bitmap上

 {   
    flash.display.Bitmap;   
    flash.display.BitmapData;   
    flash.display.Sprite;   
    flash.events.Event;   
    flash.filters.BlurFilter;   
    flash.geom.Point;   
  
     Sample0319Sprite   
    {   
        image:Bitmap;   
        blurFilter:BlurFilter;   
        point:Point;   
           
         Sample0319()   
        {   
            image = Bitmap();   
            image.bitmapData = BitmapData(stage.stageWidth,stage.stageHeight,false,0x000000);   
            .addChild(image);   
               
            blurFilter = BlurFilter();   
            point = Point();   
               
            .addEventListener(Event.ENTER_FRAME,onEnterFrame);   
        }   
           
         onEnterFrame(target:Event):   
        {   
            (i:uint=0;i<100;i++)   
            {   
                image.bitmapData.setPixel(mouseX + Math.random()*20 - 10,   
                              mouseY + Math.random()*20 - 10,   
                              0xFFFFFF);       
            }   
            image.bitmapData.applyFilter(image.bitmapData,image.bitmapData.rect,point,blurFilter);   
        }   
    }   
}

2. 位图的淡出

使用BitmapData类的pixelDissolve()方法

seed = pixelDissolve(

sourceBitmapData:BitmapData, //要使用的源位图图像。源图像可以是另一个BitmapData对象,也可以是目标位图自身

sourceRect:Rectangle, //源位图区域的矩形(一般等于目标位图的大小)

destPoint:Point, //目标位图(当前BitmapData实例)中与源矩形的左上角对应的点

randomSeed:int = 0, //用于开始像素溶解的随机种子(第一次可随意定义)

numPixels:int = 0, //每次拷贝多少像素,默认值是源区域(宽度×高度)的1/30

fillColor:uint = 0 //一个ARGB颜色值,用于填充其原值等于目标值的像素(即目标位图淡出为该种颜色) ):int

* 该函数每次调用,都返回用于后续调用的新随机种子值

* 可以通过 已拷贝的像素总数 是否大于 位图宽度×位图高度,来判断是否拷贝完成

 {   
    flash.display.Bitmap;   
    flash.display.Loader;   
    flash.display.LoaderInfo;   
    flash.display.Sprite;   
    flash.events.Event;   
    flash.geom.Point;   
    flash.net.URLRequest;   
  
     Sample0319Sprite   
    {      
        imageSmall:Bitmap;   
        imageBig:Bitmap;   
        seed:uint;   
        pixelComplete:uint = 0;   
           
         Sample0319()   
        {   
            loader:Loader = Loader();   
            loader.load(URLRequest());   
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadSmallComplete);   
               
            loader = Loader();   
            loader.load(URLRequest());   
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadBigComplete);   
           
            .addEventListener(Event.ENTER_FRAME,onEnterFrame);   
        }   
           
         onLoadSmallComplete(event:Event):   
        {   
            tmp:LoaderInfo = event.target    LoaderInfo;   
            imageSmall = tmp.loader.content    Bitmap;   
            .addChild(imageSmall);   
        }   
           
         onLoadBigComplete(event:Event):   
        {   
            tmp:LoaderInfo = event.target    LoaderInfo;   
            imageBig = tmp.loader.content    Bitmap;   
            
            
        }   
           
         onEnterFrame(event:Event):   
        {   
            (imageSmall!=null && imageBig!=null)   
            {   
                
                numPixels:uint = imageSmall.bitmapData.width * imageSmall.bitmapData.height / 100;   
                   
                seed = imageSmall.bitmapData.pixelDissolve(   
                                                            imageBig.bitmapData,   
                                                            imageSmall.bitmapData.rect,   
                                                            Point(),   
                                                            seed,   
                                                            numPixels);                                            
                pixelComplete += numPixels;   
                   
                (pixelComplete > imageSmall.bitmapData.width * imageSmall.bitmapData.height)   
                {   
                    .removeEventListener(Event.ENTER_FRAME,onEnterFrame);   
                }   
            }   
        }   
    }   
}

3. 滚动位图

使用BitmapData类的scroll(x,y)方法,将图像按一定量的(x,y)像素进行滚动。滚动区域之外的边缘区域保持不变

x -- 水平滚动量

y -- 垂直滚动量

 {   
    flash.display.Bitmap;   
    flash.display.BitmapData;   
    flash.display.LoaderInfo;   
    flash.display.Shape;   
    flash.display.Sprite;   
    flash.events.Event;   
  
     Sample0320Sprite   
    {          
        image:Bitmap;   
           
         Sample0320()   
        {   
            circle:Shape = Shape();   
            circle.graphics.beginFill(0xFFFF00);   
            (i:int=20;i<200;i=i+20)   
            {   
                circle.graphics.drawCircle(i,i,10);   
            }   
            circle.graphics.endFill();   
            
               
            image = Bitmap();   
            image.bitmapData = BitmapData(stage.stageWidth,stage.stageHeight,false,0x000000);   
            image.bitmapData.draw(circle);   
               
            .addChild(image);   
               
            .addEventListener(Event.ENTER_FRAME,onEnterFrame);   
        }   
           
         onEnterFrame(event:Event):   
        {   
            (image!=null)   
            {   
                image.bitmapData.scroll(-1,-1);   
            }      
        }   
    }   
}

4. 设置文本框的边框、背景与前景色

默认状态下,文本框的边框和背景都是禁用的。所以在设置之前需要先启用;前景色可直接设置。

边框 -- TextField.border = true; TextField.borderColor = 0xFF0000;

背景 -- TextField.background = true; TextField.backgroundColor = 0xFF0000;

前景色 -- TextField.textColor = 0xFF0000;

5. 设置文本框为可输入,不能选择及粘贴

设置TextField.type属性为TextFieldType.INPUT,可以将文本框定义为可输入。默认是TextFieldType.DYNAMIC(动态文本框,可以由ActionScript控制,但用户无法输入)

设置TextField.selectable = false,则文本字段中的文本不响应来自鼠标或键盘的选择命令,并且不能使用“复制”命令复制文本。默认为true

6. 设置文本框为密码输入框

设置TextField.displayAsPassword = true;

7. 限制文本输入

设置TextField.restrict,例如设置TextField.restrict = "abc",则只允许输入字符abc,以大写形式输入也会变成小写。

 {   
    flash.display.Sprite;   
    flash.text.TextField;   
    flash.text.TextFieldType;   
  
     Sample0323Sprite   
    {   
         Sample0323()   
        {   
            text:TextField = TextField();   
            text.type = TextFieldType.INPUT;   
            text.border = ;   
            text.borderColor = 0xFFFF00;   
            text.height = 20;   
               
            text.restrict = ; 
            
            
            
               
            .addChild(text);   
        }   
    }   
}

8. 限制文本框输入字符数

设置TextField.maxChars = 5,则为最大允许输入5个字符。如果设为null则表示不限制

9. 显示HTML格式文本

设置htmlText属性值为HTML内容

 {   
    flash.display.Sprite;   
    flash.text.TextField;   
    flash.text.TextFieldType;   
  
     Sample0323Sprite   
    {   
         Sample0323()   
        {   
            text:TextField = TextField();   
            text.type = TextFieldType.INPUT;   
            text.border = ;   
            text.borderColor = 0xFFFF00;   
            text.height = 20;   
               
            text.htmlText = ;   
            text.appendText();   
                   
            .addChild(text);   
        }   
    }   
}

10. 显示HTML文本时压缩空格

设置condenseWhite属性为true

 {   
    flash.display.Sprite;   
    flash.text.TextField;   
    flash.text.TextFieldType;   
  
     Sample0323Sprite   
    {   
         Sample0323()   
        {   
            text:TextField = TextField();   
            text.type = TextFieldType.INPUT;   
            text.border = ;   
            text.borderColor = 0xFFFF00;   
            text.height = 20;   
               
            text.condenseWhite = ; 
            text.htmlText = ;   
               
            .addChild(text);   
        }   
    }   
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值