FlashCS5作成SWC,在Flex4中使用(1)

在Flex中使用Flash作成的SWC的文章很多了,本文对实际遇到的一些问题,给出方案。

1、在Flash中作3个图元(长方形):A、B、C,其中C包含了A和B。

2、将A、B、C分别生成Flex组件:

  在“命令”菜单中,选择“将元件转换为Flex组件”,这时“库面板”中会出现“名称”和“链接”两列,在

其中“名称”列中给Flash用的,“链接”列是给Flex用的。

3、在C的第一帧中加代码,如下:

var a1:A = new A();
a1.name = "myA";
addChild(a1);

var b1:B = new B();
b1.name = "myB";
addChild(b1);

a1.x = 40;
a1.y = 140;
b1.x = 140;
b1.y = 150;

使用代码方式,定义A,B的目的是,这样生成的SWC中的组件的name属性,是我们指定的,如”myA“。如果在舞台上直接把A、B拖拽到C上,那么会由系统自动成生name值,如instance1,instance2等,将来在Flex中不方便通过name属性找到我们要用的组件。

只定义了A,B还不行,这时在Flex中整个C(包括其中的A,B)都不能显示(原因不明),对策:在舞台上,拖放一个图元(A),将它的宽高设为0,或者画个其他图形也可以。这样在Flex中就能看到C和其中的A、B了。

4、在Flex中使用代码如下:

var myC:C = new C();

addChild(myC);

var me:DisplayObject;

var tmp:MoveClip = myC as MovieClip;
for(var i:uint = 0; i < tmp.numChildren;  i++) {
  me = c.getChildAt( i );
  //或者通过名称取得指定的对象,如下:

  //me = c.getChildByName("myA");
  if (me is MovieClip) {

    trace(“找到了:” + me.name); //此时输出 “找到了:myA
  }
}

5、改进方法

在Flash中不用代码定义图元A、B,直接在舞台上拖拽到C中,也可以在Flex中访问A和B,方法见下篇文章。

posted on 2012-02-11 00:00  明小明  阅读(332)  评论(0编辑  收藏  举报

导航