⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 samplebutton.as

📁 《Flash AS3殿堂之路》光盘源码 学习ActionScript 3.0
💻 AS
字号:
package org.kingda.book.namespaces
{
	import flash.display.Sprite;
	import flash.events.KeyboardEvent;

	public class SampleButton extends Sprite
	{
		private var btn1:StateButton;
		private var btn2:StateButton;
		
		public function SampleButton() {
			 btn1 = new StateButton("Press Me.");
			 btn2 = new StateButton("Move on");
			 addChild(btn1);
			 addChild(btn2);
			 btn2.x = 100;
			 this.stage.addEventListener(KeyboardEvent.KEY_DOWN, redraw);
		}
		
		function redraw(evt:KeyboardEvent):void {
			trace (evt.keyCode);
			btn1.draw();
			btn2.draw();
		}
	}
}

import flash.display.Sprite;
import flash.text.TextField;
import flash.events.Event;
import flash.events.MouseEvent;

class StateButton extends Sprite{
    private namespace out;
    private namespace over;
    private namespace down;
    private var label:TextField;
    private var labelTxt:String;
    private var ns:Namespace;
    out var bgColor:Number = 0xFF0000;
    over var bgColor:Number = 0xFFFF00;
    down var bgColor:Number = 0xFFFFFF;
      
    public function StateButton(str:String) {
        buttonMode = true;
        labelTxt = str;
        ns = out;
        draw();
        addLabel();
        addListeners();
    }

    private function addLabel():void {
        label = new TextField();
        label.text = labelTxt;
        label.width = 50;
        label.height = 20;
        label.mouseEnabled = false;
        addChild(label);
    }
      
    private function addListeners():void {
        addEventListener(MouseEvent.MOUSE_UP, mouseOverHandler);
        addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
        addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
        addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
    }
  
    private function mouseOutHandler(e:Event):void {
        ns = out;
        draw();
    }
 
    private function mouseOverHandler(e:Event):void {
        ns = over;
        draw();
    }
 
    private function mouseDownHandler(e:Event):void {
        ns = down;
        draw();
    }
 
 	//把draw改成外部可访问,看看会不会同时影响所有实例的状态.答案是不会,引用ns是实例属性。
    public function draw():void {
    	trace (labelTxt+ "::" + ns + "bgColor:" + bgColor);
    	//use namespace ns;根部不能使用,因为这个会被编译指令提前。所以都是undefined。namespace必须通过某种机制一开始就初始化好。
    	
        this.graphics.clear();
        //this.graphics.beginFill(ns::bgColor);
        this.graphics.beginFill(bgColor);
        
        this.graphics.drawRect(0, 0, 60, 20);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -