我是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")
做了什么。谢谢你的时间。
答案 0 :(得分:0)
Okey让我试着为你解释一下:)
当你创造这个时:var f1:Flower; = new Flower("rose");
你创造一朵花,并将其命名为“玫瑰”。但是当你创建一个Flower类型变量时,它会触发TimerEvent
。当TimerEvent
开始工作时,第一行会给你
输出面板上的“测试玫瑰”。但第二行是使用setName(“xxx”)函数来改变Flower的名字。
所以,当你看看你的输出面板时,你应该看到这样的东西:
测试玫瑰
测试xxx
我希望这足以理解。如果你有问题,请问:)