总结:我通过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。我错了吗?