0

摘要:我使用库中定义的 MovieClip 类对象通过 AS3 创建各种 MovieClip 的实例。

当每个 MC 被实例化时,我将它推入一个数组以供以后参考。

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

背景:我不是职业 OO 程序员,这是一项临时任务,仅占我长期兴趣的一小部分。我的下一个 Flash 项目可能需要几年时间。

创建实例

库对象类型:MovieClip、联动_brakepipe

实例化

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

然后稍后

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

这产生

[object _breakpipe]

所以它给了我类名,而不是 MC 实例名。MC 的什么属性或方法会产生“breakpipe”?(甚至是“_breakpipe”——没有“object”前缀?)

4

2 回答 2

1

您可以使用关联数组。它可能看起来像这样:

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";
于 2016-10-05T08:27:42.080 回答
0

实例化/然后稍后/这会产生...对我来说似乎还不清楚,但是您可以尝试一下并更改代码...

因为我不确定您要存储的实例名称...

在你的循环中,如果剪辑是一个电影剪辑,你可以这样做!:

var clip: MovieClip = shapes(i);
clip.name = "breakpipe_" + i
trace (clip.name);

// will output : breakpipe_1 - > breakpipe_n...

如果需要,您可以稍后通过删除额外的“_number”来处理 clip.name。

如果我 == 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。我错了吗?

于 2016-10-05T06:57:00.840 回答