[转]访问flash中的各种元素

From:http://www.xncat.com/2009/11/catflash/57.html

1. 嵌入式资源,Embed 标签

首先需要加入 flex sdk 才能支持编译 Embed 标签,flash 有默认的 Flex SDK 路径。
file=>publish seteeing=>actionscript settings=>library path
$(FlexSDK)/frameworks/libs/flex.swc


示例见:trainEmbedEmbed.fla

//Embed image
[Embed(source="image.png")]
var pic0:Class;
//Embed swf [Embed(source="baishi_car.swf")] var swf0:Class;
var pic:Bitmap = new pic0() as Bitmap;
addChild(pic);
var swf:Sprite = new swf0() as Sprite;
addChild(swf);
swf.x = pic.width+10;
2.链接资源库,linkage 类绑定

在库中右击需要链接的元件,进入 Propertiyes=>Linkage,勾选 Export forActionScript


并在 source 中浏览到这个 fla 文件,选择到这个链接的元件


这样就生成了一个绑定此元件的类文件,我们可以直接创建这个类的实例了。 在库中可以看到状态的变化


示例见:trainLinkageLinkage.fla var tudoulogo:Sprite = new logo(); addChild(tudoulogo);

//跑一个循环,生成三个土豆 logo 吧

for(var i:uint=0;i<3;i++){
var logomc:Sprite = new logo();
addChild(logomc);
logomc.y = logomc.height + 40 + i*logomc.height;
}


3.使用 swc 文件

swc 文件中可能包含一到多个类文件 我们先要导入 swc 文件,然后就可以创建其中包含的类实例

在 Library path 中导入具体的 swc 文件,也可以只导入包含 swc 文件的文件夹即可


示例见:trainSwcLibswcSource.fla

var anim:Sprite = new anim6() as Sprite;

addChild(anim);
anim.x = (stage.stageWidth - anim.width)/2;
anim.y = (stage.stageHeight – anim.height)/2;

//访问它的子对象,控制动画播放
var animMc:MovieClip = anim.getChildByName("ch") as MovieClip;
anim.addEventListener(MouseEvent.CLICK,animclick);
function animclick(e:MouseEvent):void{
animMc.gotoAndPlay(2);
4.访问 load 进来的 swf

一.直接访问 loader 对象就可以获得加载进来的 flash 文件的对象内容 示例见:trainGetLoadSwfgetLoadSwf.fla

var loader:Loader = new Loader();
addChild(loader);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

loader.load(new URLRequest("baishi_car.swf"));
function completeHandler(evt:Event):void{
var _loaderInfo : LoaderInfo = evt.target as LoaderInfo;
var _content:DisplayObject = _loaderInfo.content;
trace(_content);
}
二.Embed 进来的资源如何访问呢?其实也是类似的

示例见:trainGetLoadSwfgetEmbed.fla

//Embed swf
[Embed(source="baishi_car.swf")]
var swf0:Class;

var swf:Sprite = new swf0() as Sprite;
addChild(swf);

//get Embed content
//需要访问 swf 对象的第一个子对象,它才是嵌入对象的 loader 对象 var loadObj:Object = swf.getChildAt(0); loadObj.contentLoaderInfo.addEventListener(Event.COMPLETE,loadSwfComplete);

function loadSwfComplete(evt:Event):void {

var _loaderInfo:LoaderInfo=evt.target as LoaderInfo;
var _content:DisplayObject=_loaderInfo.content;
trace(_content);

}
5.访问父对象与访问子对象

访问父对象使用属性 parent 即可,例如:

childMc.parent 即为 childMc 的父对象。 下面这样写是可以访问父对象的父对象的: childMc.parent.parent

访问子对象有两种方法

parentMc.getChildByName(“childName”)

parentMc.getChildAt(index)

childName为对象的实例名 对象的实例名可以在 flashide 中手动输入,


也可以用代码赋值:childMc.name = “child1”。

Index 为子对象的索引位置

在 flashide 中从库中往舞台或 mc 中拖元件即为增加舞台或 mc 的子对象,也可以用代码增加子对象:addChild(newChildMc);

往显示对象中增加子对象的时候,默认按增加的先后从 0 往上增加索引位置。
可以在增加的时候指定子对象到索引位置 addChildAt(index); 但这个 index 索引值不能大于该对象最大的索引位置+1, 并且这个 index 索引位置之后的子对象的索引值自动加 1。
可以在增加之后再设置子对象的索引 setChildIndex(chidlMc,index); 这个 index 索引值不能大于该对旬最大的索引位置, 并且这个 index 索引位置之后的子对象的索引值自动加 1。
示例见:trainParent_childparent_child.fla

mainChildBt.addEventListener(MouseEvent.CLICK,clickfunc);
mainParentBt.addEventListener(MouseEvent.CLICK,clickfunc);

function clickfunc(e:MouseEvent):void{
if(e.target == mainChildBt){
for(var i:uint=0;i<main.numChildren;i++){
var childMc:MovieClip = main.getChildAt(i) as MovieClip;
childMc.gotoAndStop(2);
}
}else if(e.target == mainParentBt){
var parentMc:MovieClip = main.parent as MovieClip;
parentMc.gotoAndStop(2);
}
}


6.访问 movieClip 与 sprite 对象的声音

movieClip 与 sprite 对象都有一个 soundTransform 属性,通过这个属性来控制声音。

示例见:trainSoundsound.fla

// _content 是一个 movieClip 或者 sprite
//new SoundTransform

var st:SoundTransform = new SoundTransform();
//静音按钮
sBt.addEventListener(MouseEvent.CLICK,sbtFunc);
sBt.buttonMode=true;

function sbtFunc(e:MouseEvent):void {
var tag:MovieClip=e.target as MovieClip;
if (sBt.currentFrame==1) {
st.volume=1;
_content.soundTransform=st;
sBt.gotoAndStop(2);
} else if (sBt.currentFrame == 2) {
st.volume=0;
_content.soundTransform=st;
sBt.gotoAndStop(1);
}
}
访问flash中的各种元素附件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值