我必须把一些画作变成动画flash SWF /游戏,其他人会把它变成一个应用程序。
我有一个开场动画 - 这会导致一个菜单,你可以选择一些东西 - 但是现在动画只会播放到用户选择游戏的框架。
我制作了游戏菜单 - 当您选择游戏时 - 按钮会将特定游戏加载到空MC(称为emptymc - 实例名称emptymc_MC)
游戏加载并覆盖整个屏幕,除了顶层的菜单栏 - 它始终位于应用程序的下方。我还没有做出这些选择 - 但它很可能是一个合理的切换 - 访问网站 - 购买完整的应用程序。
理想情况下,我希望这可以完成到最后一帧,然后卸载或删除自己。与此同时,SWF在下面显露出来。我的问题是我无法摆脱导入的SWF,即使我将新版本加载到加载器中也是如此。
stop();
bee.addEventListener(MouseEvent.CLICK, Click);
function Click( event:MouseEvent):void {
gotoAndPlay(currentFrame+1);
}
bee.addEventListener(MouseEvent.CLICK,f);
function f(e:Event):void{
var movieArray:Array = ["howmanybees1", "howmanybees2", "howmanybees3",];
var loader:Loader = new Loader();
var index:int = movieArray.length * Math.random();
var url:String = movieArray[index] + '.swf';
trace("Attempting to load", url);
loader.load(new URLRequest(url)); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
addChild(loader);
function loaderComplete(e:Event):void {
trace("Successfully loaded", url);
} function loaderIOError(e:IOErrorEvent):void {
trace("Failed to load", url);
}
}
**编辑**
这是我目前的源代码:
stop();
bee.addEventListener(MouseEvent.CLICK, Click);
function Click(event: MouseEvent): void {
gotoAndPlay(currentFrame + 1);
}
bee.addEventListener(MouseEvent.CLICK, f);
function f(e: Event): void {
var movieArray: Array = ["howmanybees1", "howmanybees2", "howmanybees3", "howmanybees4", "howmanybees5", ];
var loader: Loader = new Loader();
var index: int = movieArray.length * Math.random();
var url: String = movieArray[index] + '.swf';
trace("Attempting to load", url);
loader.load(new URLRequest(url));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
stage.addEventListener("UnloadGame", unloadGame);
addChild(loader);
function loaderComplete(e: Event): void {
trace("Successfully loaded", url);
}
function loaderIOError(e: IOErrorEvent): void {
trace("Failed to load", url);
}
function unloadGame(e: Event): void {
trace("unloaded at last", url);
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loaderComplete);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
loader.removeEventListener("UnloadGame", unloadGame);
removeChild(loader);
loader.unloadAndStop();
}
}
sheepgamebtn.addEventListener(MouseEvent.CLICK, Click2);
function Click2(event: MouseEvent): void {
gotoAndPlay(currentFrame + 1);
}
sheepgamebtn.addEventListener(MouseEvent.CLICK, i);
function i(e: Event): void {
var movieArray: Array = ["sheep1"];
var loader: Loader = new Loader();
var index: int = movieArray.length * Math.random();
var url: String = movieArray[index] + '.swf';
trace("Attempting to load", url);
loader.load(new URLRequest(url));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
stage.addEventListener("UnloadGame", unloadGame);
addChild(loader);
function loaderComplete(e: Event): void {
trace("Successfully loaded", url);
}
function loaderIOError(e: IOErrorEvent): void {
trace("Failed to load", url);
}
function unloadGame(e: Event): void {
trace("unloaded at last", url)
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loaderComplete);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
loader.removeEventListener("UnloadGame", unloadGame);
removeChild(loader);
loader.unloadAndStop();
}
}
答案 0 :(得分:0)
加载新的swf根本不会影响以前加载的swf(即使使用相同的变量)。你需要告诉Flash要做什么。
完成加载的内容后,您应该做三件事:
将其从显示屏中删除:
removeChild(loader);
删除所有未被弱引用的事件侦听器:
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
卸载加载程序:
loader.unloadAndStop();
完成这些工作后,您可以重复使用该变量并加载新内容。
编辑
以下是让您的孩子swf触发卸载的示例:
在您加载的SWF的主要时间轴内某处
function unloadGame():void {
if(stage) stage.dispatchEvent(new Event("UnloadGame"));
}
在你的主swf中
loader.load(new URLRequest(url));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
stage.addEventListener("UnloadGame", unloadGame);
addChild(loader);
function unloadGame(e:Event):void {
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,loaderComplete);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
loader.removeEventListener("UnloadGame", unloadGame);
removeChild(loader);
loader.unloadAndStop();
}