Actionscript 3 AS3精灵按钮深度不工作

Actionscript 3 AS3精灵按钮深度不工作,actionscript-3,Actionscript 3,我无法使精灵按钮显示在适当的深度。我怀疑这可能与我的加载器对象有关,但找不到解决方案。当我追踪深度时,它是正确的索引3,但仍然显示在索引0上。“关闭视频开始”和“关闭视频结束”注释之间的代码谢谢 import flash.display.Loader; import flash.events.Event; import flash.display.MovieClip; import flash.utils.Timer; import flash.events.TimerEvent; impo

我无法使精灵按钮显示在适当的深度。我怀疑这可能与我的加载器对象有关,但找不到解决方案。当我追踪深度时,它是正确的索引3,但仍然显示在索引0上。“关闭视频开始”和“关闭视频结束”注释之间的代码谢谢

import flash.display.Loader;
import flash.events.Event;
import flash.display.MovieClip;

import flash.utils.Timer;
import flash.events.TimerEvent;

import flash.display.Shape; 
import flash.display.Sprite;

//----------------------------------- 300x250 Start ---------------------------------\\

//SWF Load and URL Request
var myLoader:Loader = new Loader();  
var url:URLRequest = new URLRequest("_/media/300x250.swf"); 

//Function for Replay
function loadSWF():void {
//Add URL to Load Object
myLoader.load(url); 
//Index 0   
addChild(myLoader);  
//Loader Cordinates 
myLoader.x = 803;                                        
myLoader.y = 331;   
}

// Mask for Load Object 300x250
var maskSWF:Shape = new Shape(); 
maskSWF.graphics.lineStyle(); 
maskSWF.graphics.beginFill(0x0); 
maskSWF.graphics.drawRect(803, 331, 300, 250); 
maskSWF.graphics.endFill(); 
this.addChild(maskSWF); 

myLoader.mask = maskSWF; 

//----------------------------------- 300x250 End ---------------------------------\\

//----------------------------------- Video Start ---------------------------------\\

//Video Player Load and URL Request
var myLoaderVidPlay:Loader = new Loader();  
var urlVidPlay:URLRequest = new URLRequest("_/media/vid_player.swf");

//Timer Function to Play Video Player UI 
function timerListenerVidPlay (e:TimerEvent):void{
//Add URL to Load Object
myLoaderVidPlay.load(urlVidPlay);    
//Index 1
addChild(myLoaderVidPlay);

//Loader Cordinates 
myLoaderVidPlay.x = 803;                                        
myLoaderVidPlay.y = 331;     
}

//New Timer Object Video Background
var myTimerVidPlay:Timer = new Timer(1400,1);
myTimerVidPlay.addEventListener(TimerEvent.TIMER, timerListenerVidPlay);


//Creating NetConnection object - Set to null when local folder
var nc:NetConnection = new NetConnection(); 
nc.connect(null);

//New NetStream
var ns:NetStream = new NetStream(nc); 
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); 
function asyncErrorHandler(event:AsyncErrorEvent):void 
{ 
    // ignore error 
}

//New Video Object
var vid:Video = new Video(); 

//Timer Function to Play Vid
function timerListenerVid (e:TimerEvent):void{
//Index 2   
ns.play("./_/media/vid.flv"); 
vid.attachNetStream(ns); 
addChild(vid);      
vid.x = 818;                                        
vid.y = 345;  
vid.width = 271;
vid.height = 153;
}


//New Timer Object Video
var myTimerVid:Timer = new Timer(1500,1);
myTimerVid.addEventListener(TimerEvent.TIMER, timerListenerVid);


//------------------------------------ Video End ---------------------------------\\

//----------------------------------- Replay Start ---------------------------------\\

//Removes and Reloads SWFs for Replay
replay.addEventListener(MouseEvent.CLICK, replayClickHandler);

//Replay Advertisement
function replayClickHandler(event:MouseEvent):void
{
    myLoader.unload();
    myLoaderVidPlay.unload();
    myTimerVidPlay.stop();
    //Closes Video Stream
    ns.close();

    loadSWF();
    myTimerVidPlay.start();
    myTimerVid.start();
}

//----------------------------------- Replay End ---------------------------------\\

//----------------------------------- Close Video Start ---------------------------------\\

var closeVid:Sprite = new Sprite(); 
closeVid.graphics.beginFill(0xFF0000, .5); 
closeVid.graphics.drawRect(703, 331, 300,250);
closeVid.graphics.endFill(); 
//Index 3
addChild(closeVid);
//trace(getChildIndex(this.closeVid));

//Adds hand cursor
closeVid.useHandCursor = true;
closeVid.buttonMode = true;

closeVid.addEventListener(MouseEvent.CLICK, myClickCloseVid);

function myClickCloseVid (e:MouseEvent):void{
    myTimerVidPlay.stop();
    myLoaderVidPlay.unload();
    //Closes Video Stream
    ns.close();
    removeChild(vid);
}

//----------------------------------- Close Video End ---------------------------------\\


//Start Functions
loadSWF();
myTimerVid.start();
myTimerVidPlay.start();

您正在调用addChild(closeVid);在调用addChild(myLoader)之前

调用addChild(closeVid);在调用loadSWF()之后;后者调用addChild(myLoader)

这就是你问题的解决办法

现在,loadSWF?它是什么类型的名称?它是误导性的,稍后(月、年)您将需要检查函数体以了解它的功能


在函数中添加child也是一个坏主意-为什么?这是您的问题的根源:)而此函数的作用不仅仅是将一个子元素添加到一个应单独保存的显示列表中。

我将采纳您的建议并尝试修复它。我没有更改我从中学习到的示例中的一些名称,因为我正在尽可能快地将其拼凑在一起o找到一份工作,事情已经过了仔细检查。我是一名平面设计师,所以我正在尽我所能。我知道这段代码对开发人员来说一定是一场灾难。对不起。