在AS3中理解和分配字符串值

时间:2015-08-21 11:14:27

标签: string actionscript-3 class timer

我是AS3的新手,我想弄清楚类和字符串是如何工作的。我有两个文件: Main.as:

package
{
    import flash.display.*;

    public class Main extends Sprite 
    {
        public function Main():void 
        {       
            var f1:Flower = new Flower("rose"); 
            var f2:Flower = new Flower("cactus"); 
            var f3:Flower = new Flower("fff");                    
        }
    }
}

Flower.as:

package 
{
    import flash.events.TimerEvent;
    import flash.utils.Timer;

    public class Flower 
    {
        protected var name:String; 
        public function Flower(name:String):void
        {
           setName(name); 

           var updateTimer:Timer;
           updateTimer = new Timer(500.6, 2);
           updateTimer.addEventListener(TimerEvent.TIMER, TimerFun);
           updateTimer.start();                 
        }

        public function TimerFun(e:TimerEvent):void 
        {
            trace ("test " + getName());
            setName("xxx");
        }       

        public function setName(name:String):void 
        {
            this.name = name; 
        }

        public function getName():String 
        {       
            return name;
        }
    }
}

基本上从我的理解,每次我在课堂上创建一个实例" Flower.as"像这样:

var f1:Flower = New Flower("rose"));

它将每个实例保存到位于flower.as的protected var name中的新行。那么我可以用getnames得到名字。我放置了一个计时器来检查值,在计时器内我决定尝试使用函数setName("xxx")分配一个新名称,并设置计时器以激活自己两次以查看结果如何变化;然而,它所做的只是用值" xxx"替换所有实例,它没有添加任何东西(我期望一个名为" xxx&#34的新字符串;以及其他)。我需要解释什么

var f1 Flower:Flower = New Flower("rose");

完全和setName("xxx")做了什么。谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

Okey让我试着为你解释一下:)

当你创造这个时:var f1:Flower; = new Flower("rose");你创造一朵花,并将其命名为“玫瑰”。但是当你创建一个Flower类型变量时,它会触发TimerEvent。当TimerEvent开始工作时,第一行会给你 输出面板上的“测试玫瑰”。但第二行是使用setName(“xxx”)函数来改变Flower的名字。

所以,当你看看你的输出面板时,你应该看到这样的东西:

测试玫瑰

测试xxx

我希望这足以理解。如果你有问题,请问:)