flash绑定资源自定义一个按钮

写一个按钮类

package mobile.display

{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.filters.BitmapFilterQuality;
import flash.filters.GlowFilter;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;

public class SecSimpleButton extends Sprite{
[Embed(source="resource/button/SimpleButton1_1.png")] 
private var simpleButton1_1:Class;

[Embed(source="resource/button/SimpleButton1_2.png")] 
private var simpleButton1_2:Class;

[Embed(source="resource/button/SimpleButton1_3.png")] 
private var simpleButton1_3:Class;


[Embed(source="resource/button/SimpleButton2_1.png")] 
private var simpleButton2_1:Class;

[Embed(source="resource/button/SimpleButton2_2.png")] 
private var simpleButton2_2:Class;

[Embed(source="resource/button/SimpleButton2_3.png")] 
private var simpleButton2_3:Class;

private static var textFormat:TextFormat;

private var skin:SecMovieClip;
private var _textf:TextField;
private var _type:int;
public function SecSimpleButton(text:String="確 定",button_type:int=1){
super();
this.mouseChildren=false;
this.cacheAsBitmap=true;
this.buttonMode=true;
if(button_type==1){
skin=new SecMovieClip(simpleButton1_1,simpleButton1_2,simpleButton1_3);
}else{
skin=new SecMovieClip(simpleButton2_1,simpleButton2_2,simpleButton2_3);
}
this.addChild(skin);
_textf=new TextField;
_textf.x=0;
_textf.y=15;
_textf.width=this.width;
_textf.height=50;
_textf.autoSize=TextFieldAutoSize.CENTER;
if(!textFormat){
textFormat=new TextFormat;
textFormat.color=0xE4BA9A;
textFormat.size=30;
textFormat.font='黑體';
}
_textf.defaultTextFormat=textFormat;
_textf.text=text;
this.addChild(_textf);
_type=button_type;
this.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
this.addEventListener(MouseEvent.MOUSE_UP,onUp);
this.addEventListener(MouseEvent.MOUSE_OUT,onOut);
var glow:GlowFilter = new GlowFilter(0,1,5,5,1000,BitmapFilterQuality.LOW);
_textf.filters=[glow];
}

public function setBtnTxt(text:String):void{
_textf.text=text;
}

public function clear():void{
skin.clear();
this.removeEventListener(MouseEvent.MOUSE_DOWN,onDown);
this.removeEventListener(MouseEvent.MOUSE_UP,onUp);
this.removeEventListener(MouseEvent.MOUSE_OUT,onOut);
}

private function onOut(e:MouseEvent):void{
if(skin){
if(_type==2){
skin.width=340;
skin.height=70;
skin.x=0;
skin.y=0;
}else{
skin.gotoAndStop(0);
}
}
}

private function onDown(e:MouseEvent):void{
if(skin){
if(_type==2){
skin.width=348;
skin.height=78;
skin.x=-4;
skin.y=-4;
}else{
skin.gotoAndStop(1);
}
}
}

private function onUp(e:MouseEvent):void{
if(skin){
if(_type==2){
skin.width=340;
skin.height=70;
skin.x=0;
skin.y=0;
}else{
skin.gotoAndStop(0);
}
}
}

public function setUnClick(bUnClick:Boolean=true):void{
if(bUnClick){
this.mouseEnabled=false;
skin.gotoAndStop(2);
}else{
this.mouseEnabled=true;
skin.gotoAndStop(1);
}
}
}

}


按钮类中要用到的自定义Bitmap

package mobile.display
{
import flash.display.Bitmap;
import flash.display.BitmapData;

public class SecMovieClip extends Bitmap
{
public var currentFrame:int = 0;
public var vectorBitmapData:Vector.<BitmapData>;
public function SecMovieClip(...args){
this.vectorBitmapData=new Vector.<BitmapData>;
var len:int=args.length;
var cls:Class;
var bitData:Bitmap;
for(var i:int=0;i<len;++i){
cls=args[i] as Class;
if(cls){
bitData=(new cls) as Bitmap;
if(bitData){
vectorBitmapData.push(bitData.bitmapData.clone());
bitData.bitmapData.dispose();
}
}
}
currentFrame=0;
if(vectorBitmapData!=null&&vectorBitmapData.length>1){
this.bitmapData=vectorBitmapData[0];
}
}

public function get totalFrames():int{                                                  
if(this.vectorBitmapData){
return this.vectorBitmapData.length;
}
return 0;
}

public function nextFrame():void{
if(currentFrame==totalFrames){
return;
}
currentFrame++;
if(currentFrame==totalFrames){
return;
}
if(vectorBitmapData!=null){
this.bitmapData=vectorBitmapData[currentFrame];
}
}

public function gotoAndStop(curr:int):void{
if(totalFrames<1){
return;
}
currentFrame=curr;
if(currentFrame>=totalFrames||currentFrame<0){
currentFrame=0;
}
if(vectorBitmapData!=null){
this.bitmapData=vectorBitmapData[currentFrame];
}
}

public function clear():void{
if(!this.vectorBitmapData){
for each(var bit:BitmapData in vectorBitmapData){
bit.dispose();
}
this.vectorBitmapData.length=0;
this.vectorBitmapData=null;
}
}
}
}

有了上面两个类,就可以使用自定义的按钮了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值