2012-11-04 55 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(); } 
}