FLASH AS3 外部调用SWF 问题

我想用爷爷外部调用调用爸爸,爸爸还有个儿子,也就是一个按钮然后点击儿子按钮,告诉爷爷把爸爸remove掉这个怎么能实现呢... 我想用爷爷外部调用调用爸爸, 爸爸还有个儿子,也就是一个按钮
然后点击儿子按钮, 告诉爷爷 把爸爸 remove掉

这个怎么能实现呢
展开
 我来答
zb6306
2012-02-21 · TA获得超过777个赞
知道大有可为答主
回答量:2585
采纳率:66%
帮助的人:1206万
展开全部
这个应该是爷爷,儿子孙子的问题吧,那请问你,点击孙子删除儿子,那孙子呢,留不留?
还有一个问题,就是你是想在爷爷中控制孙子删除儿子,是这样吧,我有个办法可以解决你这个问题,还是域的问题,这个需要在你制作动画的时候,设计好,就是在儿子的影片中,设计好儿子(影片)及孙子(按钮),然后在库中属性设置好类链接,并为其分别起一个类名,这样即使你外部的影片舞台是空的内容,那么你也可以通过域来实现对儿子及孙子的控制。这样就可以象使用爷爷家的东西一样来轻易的实现控制了。
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.display.DisplayObject;

var loadClassMc:Class;
var loadClassBtn:Class;
var url:String = "儿子.swf";
var req:URLRequest = new URLRequest(url);
var loader:Loader=new Loader();
//假设你的元件是个影片剪辑
var swfMc:MovieClip;
//假设你的按钮是一个SimpleButton;
var swfBtn:SimpleButton;
//创建一个容器用以承载外部的按钮及影片
var swfSprite:Sprite=new Sprite();
loader.load(req);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderHand);
function onLoaderHand(evt:Event):void
{
//让我们先来检查一下外部swf中是不是有我们要获取的类定义,以便我们调用。
if (evt.target.applicationDomain.hasDefinition("儿子"))
{
loadClassMc = evt.target.applicationDomain.getDefinition("儿子") as Class;
//重新实例化,在爷爷处重新调用
swfMc=new loadClassMc();

}
if (evt.target.applicationDomain.hasDefinition("孙子"))
{
loadClassBtn = evt.target.applicationDomain.getDefinition("孙子") as Class;
//重新实例化,在爷爷处重新调用
swfBtn=new loadClassBtn();
}
if (swfBtn!=null&&swfMc!=null)
{
swfSprite.addChild(swfMc);
swfSprite.addChild(swfBtn);
//以下设置坐标的脚本,在此略去;
addChild(swfSprite);
//添加鼠标事件,用以删除儿子,就是整体删除外部加载的影片,包括按钮
swfBtn.addEventListener(MouseEvent.CLICK,onRemove);
}
}
function onRemove(evt:MouseEvent):void
{
//在此只要将显示对象从显示列表中清除就可以了。
removeChild(DisplayObject(swfSprite));
}
百度网友b96d268
2012-02-21 · TA获得超过217个赞
知道小有建树答主
回答量:334
采纳率:0%
帮助的人:325万
展开全部
那用事件做吧,首先爷爷加一个监听,然后儿子点击的时候抛出这个事件 爷爷监听到这个事件 就删除爸爸
爷爷里的代码:
addEventListener("MyEvent",MyEvent);
function MyEvent(e:Event)
{
removeEventListener("MyEvent",MyEvent);
removeChild(爸爸);
}

然后在儿子点击函数里 写:
dispatchEvent(new Event("MyEvent",true));//抛出MyEvent 这个事件 爷爷就会知道了 然后删除爸爸
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谁也没我有性格
2012-02-21 · TA获得超过3036个赞
知道大有可为答主
回答量:2588
采纳率:66%
帮助的人:2081万
展开全部
这个用到单例模式可以解决, 爷爷和爸爸都具有唯一的名称 是全局的 可以互相调用,也就是说点击爸爸里面的“儿子” 爷爷(名称)remove他加载进来的爸爸 搜下单例模式吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式