方法.attachMovie()不再受支持.Flash到AS3的转换

时间:2014-01-29 09:16:37

标签: actionscript-3 flash flash-cs6

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

`// 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);

1 个答案:

答案 0 :(得分:0)

addChild()只接受1个参数,即显示对象本身。此外,在您创建对象时,您似乎缺少括号,按照惯例,类名称是大写的。

var mItem:movieitem = new movieitem();

根据我的评论进行编辑

查看针对AS2的attachMovie()的文档(哇,自从我看过这个以来已经有一段时间了),它需要3个参数:

id:String,name:String,depth:Number

现在 id 用于从库中获取动画片段。不再需要这个,因为您之前已经从库中创建了一个movieclip对象:

var mItem:Movieitem = new Movieitem();

第二个参数 name 用于为库中创建的moviclip创建唯一的实例名称。你真的不需要这个。在创建动画片段的行中(见上文),您已经拥有了一个可用于访问动画片段的唯一引用。有趣的是,attachMovie()还返回了一个引用 - 我从来没有找到过使用' name'论点。我只是使用返回的引用来访问它,你已经在做了。

第三个参数 depth 决定了动画片段的放置深度。在你的情况下,我猜测' ITEM_COUNT'只是一个增加的数字,它有效地将该影片剪辑放在执行该行时的最高深度。默认情况下,addChild()将自动为您执行此操作,并在添加时将显示对象(您的movieclip)放在父级中的最高深度。所以,除非你想要一个特定的深度/重叠顺序,否则你真的不需要传递它。如果您确实想要在特定深度添加内容,请查看addChildAt()

因此,如前所述,您只需将对movieclip / display对象的引用传入addChild()即可。