2012-11-04 51 views
1

我是as3的初学者。我想制作一个包含两个平行电影剪辑的盒子,并在鼠标悬停时重新加载。我想添加链接到电影剪辑,但很长一段时间后,我什么都没有结束。AS3 paralell电影剪辑+链接

代码如下所示:

import flash.events.MouseEvent; 

for (var fl_ChildIndex:int = 0; 
fl_ChildIndex < this.numChildren; 
fl_ChildIndex++) 
{ 
this.getChildAt(fl_ChildIndex).addEventListener(MouseEvent.MOUSE_OVER, nawierzch); 
} 

function nawierzch(event:MouseEvent):void 
{ 
this.addChild(event.currentTarget as DisplayObject); 
} 
zlec.stop(); 

zlec.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); 
zlec.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); 
zlec.addEventListener(MouseEvent.CLICK, onClick); 

zlec.buttonMode = true; 
zlec.mouseChildren = true; 


function onClick(event:MouseEvent):void 
{ 
    trace("click") 
var url:String = "http://www.motoopcja.pl"; 
var request:URLRequest = new URLRequest(url); 
try { 
     navigateToURL(request, '_blank'); 
    } catch (e:Error) { 
     trace("Error occurred!"); 
    } 

} 

function onMouseOver(e:MouseEvent):void 
{ 
var mc:MovieClip = MovieClip(e.currentTarget); 

mc.removeEventListener(Event.ENTER_FRAME, rewind); 

mc.play(); 
mc.addEventListener(Event.ENTER_FRAME, advance); 
} 

function onMouseOut(e:MouseEvent):void 
{ 
var mc:MovieClip = MovieClip(e.currentTarget); 

mc.removeEventListener(Event.ENTER_FRAME, advance); 

mc.prevFrame(); 
mc.addEventListener(Event.ENTER_FRAME, rewind); 
} 

function advance(e:Event):void 
{ 
var mc:MovieClip = MovieClip(e.currentTarget); 

if (mc.currentFrame == mc.totalFrames) 
{ 
    mc.stop(); 
    mc.removeEventListener(Event.ENTER_FRAME, advance); 
} 
} 

function rewind(e:Event):void 
{ 
var mc:MovieClip = MovieClip(e.currentTarget); 

if (mc.currentFrame == 1) 
{ 
    mc.stop(); 
    mc.removeEventListener(Event.ENTER_FRAME, rewind); 
} 
else 
{ 
    mc.prevFrame(); 
} 
} 
wykonaj.stop(); 

wykonaj.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver2); 
wykonaj.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut2); 
wykonaj.addEventListener(MouseEvent.CLICK, onClick2); 

wykonaj.buttonMode = true; 
wykonaj.mouseChildren = true; 

function onClick2(e:MouseEvent):void 
{ 
trace("click") 
} 

function onMouseOver2(e:MouseEvent):void 
{ 
var mc:MovieClip = MovieClip(e.currentTarget); 

mc.removeEventListener(Event.ENTER_FRAME, rewind); 

mc.play(); 
mc.addEventListener(Event.ENTER_FRAME, advance); 
} 

function onMouseOut2(e:MouseEvent):void 
{ 
var mc:MovieClip = MovieClip(e.currentTarget); 

mc.removeEventListener(Event.ENTER_FRAME, advance); 

mc.prevFrame(); 
mc.addEventListener(Event.ENTER_FRAME, rewind); 
} 

function advance2(e:Event):void 
{ 
var mc:MovieClip = MovieClip(e.currentTarget); 

if (mc.currentFrame == mc.totalFrames) 
{ 
    mc.stop(); 
    mc.removeEventListener(Event.ENTER_FRAME, advance); 
} 
} 

function rewind2(e:Event):void 
{ 
var mc:MovieClip = MovieClip(e.currentTarget); 

if (mc.currentFrame == 1) 
{ 
    mc.stop(); 
    mc.removeEventListener(Event.ENTER_FRAME, rewind); 
} 
else 
{ 
    mc.prevFrame(); 
} 

} 
+0

当你提到“一无所有”,这是什么意思?当鼠标悬停影片剪辑时,您会看到什么样的跟踪?我怀疑你的MovieClip可能需要一个“透明”的块(一个块与MovieClip的点击区域一样大,但是填充了alpha = 0的颜色),所以它会感应到鼠标的交互。 –

+0

什么也不表示URLRequest不起作用。我看到按钮跟踪(指向手)。有这样的块。他们作为互动的触发器。 – bluercharger

回答

0

的问题可以是不导入你需要的一切。 您还必须小心,不要移除不存在的事件侦听器。 这可能会在您的代码中经常发生。以下是一个示例:

zlec翻转过来。 zlec将倒回eventlistener移除(不存在)。

我不知道你是否有一些外部的AS3阻止它,但它可以抛出一个错误。

这是一个非常简洁的解决方案:

import flash.events.MouseEvent; 
import flash.net.URLRequest; 
import flash.net.navigateToURL; 
import flash.events.Event;//imports 

zlec.addEventListener(MouseEvent.ROLL_OVER,turnPar); 
zlec.addEventListener(MouseEvent.ROLL_OUT,turnPar); 
zlec.addEventListener(MouseEvent.CLICK,clickedBox); 
zlec.buttonMode = true;//make the cursor change on roll over 

for(var curChild:uint=0;curChild<this.numChildren) { 
    this.getChildAt(curChild).addEventListener(Event.ENTER_FRAME,playPar); 
} 

var theState:String = "MouseEvent.ROLL_OUT";//by default rewind to frame 1 
function turnPar(event:MouseEvent):void { theState = event.type; } 

function clickedBox(event:MouseEvent):void { 
    var url:String = "http://www.motoopcja.pl";//your website 
    var req:URLRequest = new URLRequest(url);//as URLRequest 
    navigateToURL(req,'_blank');//open in a new window 
} 

function playPar(event:Event):void { 
    if("MouseEvent.ROLL_OUT" == theState && event.currentTarget.currentFrame > 1) { event.currentTarget.prevFrame(); } 
    else if("MouseEvent.ROLL_OVER" == theState && event.currentTarget.currentFrame < event.currentTarget.totalFrames) { event.currentTarget.nextFrame(); } 
}