AS3影片剪辑名称歧义



总结:我通过AS3创建了各种MovieClips的实例,使用在库中定义的MovieClip类对象。

当每个MC实例化后,我将其压入数组以供以后引用。

最后,我创建了一个XML文件,其中包含与每个MC相关的数据,包括其名称。这是有问题的部分—名称必须能够在回读XML时识别相应的MC。我不想要"instance17"等,我认为这在另一个会话中是没有意义的。

背景:我不是职业OO程序员,这是一个临时任务,只构成我长期兴趣的很小一部分。我的下一个Flash项目可能要过几年才能完成。

<<p> 创建实例/strong>

库对象类型:MovieClip, linkage _brakepipe

实例化

var brakepipe: _brakepipe = new _brakepipe();
shapes.push(brakepipe);

然后

var clip: MovieClip = shapes(i);
Trace (clip);

这个产量

[object _breakpipe]

它给我的是类名,而不是MC实例名。MC的什么性质或方法会产生"breakpipe"?

可以使用关联数组。它可以像这样:

var shapes:Array = new Array();

shapes.push({item:_brakepipe,_name:"brakepipe"};

基本上,花括号创建了一个Object实例,冒号(:)前面的名称是您创建的希望与冒号后面的值相关联的名称。

现在你可以在循环

中这样做
trace(shapes[i]._name+"n"+shapes[i].item);
// output: 
// brakepipe
// [object _brakepipe]

这个方法的好处是,你可以扩展它的任意数量的属性与你的数组元素相关联,像这样:

shapes.push({item:_brakepipe,_name:"brakepipe",urlLink:"http://www.sierra.com",_status:"used",_flagged:"false"};
现在

shapes[i]._status

将返回字符串" used "。你可以在运行时通过

将该值更改为" new "
shapes[i]._status = "new";

The Instantiation/Then later/This产生…似乎对我来说是不清楚的,但你可以试试这个,改变代码…

因为我不确定不确定你想要存储的实例名…

在你的循环中,如果clip是一个MovieClip,你可以这样做!:

var clip: MovieClip = shapes(i);
clip.name = "breakpipe_" + i
trace (clip.name);
// will output : breakpipe_1 - > breakpipe_n...

如果您愿意,可以稍后通过删除额外的"_number"来处理clip.name。

如果i == 13

var clip: MovieClip = new MovieClip();
clip.name = "breakpipe_" + 13
trace(clip.name);
// output breakpipe_13
var pattern:RegExp = /_d*/g;
trace(clip.name.replace(pattern,""));
//output :
//breakpipe

在这里,你可以用实例名推入Array或Vector。我错了吗?

相关内容

  • 没有找到相关文章

最新更新