0

我有一个带有 swcA.swc 和 swcB.swc 的 AS3 项目。swcA 有一个用于 ActionScript 类的 mc 导出,名为 mcA。

mcA 有一个子组合框。swcB 的情况与 swcA 类似,如下图:

swcA
    mcA (a definition)
       combobox (a child of mcA)

swcB
    mcB (a definition)
      combobox (a child of mcB)

在我的代码中:(3种情况)

  1. var m:MovieClip = new mcA(); // work fine

  2. var m:MovieClip = new mcB(); // work fine

  3. var m1:MovieClip = new mcA();

    var m2:MovieClip = new mcB();  // trace type error:
                                   // it says xxxxMovieClip couldn't convent to xxx.xxx.Combobox;
    

我的swc很简单,就是一个MovieClip和里面的一些fl控件,而这个MovieClip有一个联动名。

因为在 Flash 作者中设计 UI 布局比较容易,我不喜欢编写它。

如果其他包含一个或多个 fl 控件的 swc 文件包含在具有链接名称的 MovieClip 中,则编译时将导致错误。

4

1 回答 1

0

没有看到 SWCs FLA 文件很难说,但我会这样做。但取决于设计。

将组合框组件放入库中,确保链接,然后导出一个名为 assets 的 SWC。将 SWC 链接到您的项目。

在您的 AS3 中,您可以:

var mc1:MovieClip = new MovieClip();
var cb1:ComboBox = new ComboBox();
mc1.addChild(cb1);
addChild(mc1);
// Accessible via mc1.cb1. and cb1.

你也可以这样做:

var sp1:Sprite = new Sprite();
var cb2:ComboBox = new ComboBox();
sp1.addChild(cb2);
addChild(sp1);
// Accessible via sp1.cb2. and cb2.

这些天我倾向于在电影剪辑上使用精灵,除非它们是基于时间线的或高度图形定制的。

当您在创建资产后切换其类型时,通常会在创建资产时闪现错误。例如来自图形的movieclip。我倾向于删除并重新创建电影剪辑并将组合框放在其中并分配链接。这应该可以分配给你想要的尽可能多的变量。

D

PS。

我刚刚打开 Flash 并创建了一个影片剪辑(选择绘制框并按 F8)

  1. 我将链接名称设置为“容器”

  2. 在movieclip中,我删除了一个组合框并给它一个实例名称(在“cb”的属性面板中)

然后这段代码在根时间轴上运行良好:

import flash.display.MovieClip;

var mc1:MovieClip = new container();
addChild(mc1);

var mc2:MovieClip = new container();
addChild(mc2);

var mc3:MovieClip = new container();
addChild(mc3);

trace(mc1.cb); // Found [object ComboBox]
trace(mc2.cb); // Found [object ComboBox]
trace(mc3.cb); // Found [object ComboBox]
于 2012-09-11T11:45:13.063 回答