方法.attachmovie()不再支持.flash至AS3转换



我正在完成一个在线教程并操纵它适合我的网站。我遇到了此代码...

`// Create a menu item movie clip in the menu_mc instance on the main timeline
            // for each item element offsetting each additional further down the screen
var item_mc = menu_mc.attachMovie("movieitem","item"+item_count, item_count);
            item_mc._x = item_count * item_spacing;
            item_count++;`

以下行给我一个问题(不再支持该方法)

var item_mc = menu_mc.attachMovie("movieitem","item"+item_count, item_count);

我该如何实现?

我毫不犹豫地尝试了以下内容。消息太多的论点?

var mItem:movieitem = new movieitem;
var item_mc = menu_mc.addChild(mItem,mItem+item_count, item_count);

addchild()仅接受1个参数,这是显示对象本身。另外,看起来您在创建对象和惯例时缺少括号,班级名称已大写。

var mItem:movieitem = new movieitem();

根据我的评论编辑

查看AS2的actactmovie()文档(哇,自从我看了一段时间以来已经有一段时间),它进行了3个参数:

id:字符串,名称:字符串,深度:号码

现在, id 用于从库中获取MovieClip。这是不再需要的,因为您已经从该行中的库中创建了一个MovieClip对象:

var mItem:Movieitem = new Movieitem();

第二个参数 name 用于创建从库中创建的Moviclip的唯一实例名称。您真的不需要这个。在创建MovieClip的行中(请参见上文),您已经有一个唯一的参考来访问MovieClip。有趣的是,AttachMovie()还返回参考 - 我从未找到使用"名称"参数给出的实例名称的用途。我只使用返回的参考来访问它,您已经在做。

第三个参数 depth 确定放置MovieClip的深度。在您的情况下,我猜想" item_count"只是一个增加的数字,在执行该行时,这实际上使该电影剪辑处于最高深度。默认情况下,AddChild()将自动为您执行此操作,并在添加时将显示对象(MovieClip)放在父级内的最高深度。因此,除非您想要以特定的深度/重叠顺序,否则您实际上不需要将其通过。如果您确实想在特定的深度添加一些内容,请查看AddChildat()

因此,如前所述,您只需将您的MovieClip/Display对象引用到AddChild()。

最新更新