2017-02-17 90 views
1

我最近開始在ActionScript 3中編寫代碼,並且在試圖縮放MovieClip時遇到了問題。Actionscript 3縮放

{ 
    private var valGrandX:Number; 
    private var valGrandY:Number; 
    public function Bonhomme_Fil() 
    { 
     valGrandX = this.scaleX; 
     valGrandY = this.scaleY; 

     this.addEventListener(MouseEvent.ROLL_OVER, big); 
     this.addEventListener(MouseEvent.ROLL_OUT, small); 
    } 
    private function big(event:MouseEvent):void 
    { 
     this.scaleX *= 1.5; 
     this.scaleY *= 1.5; 
    } 
    private function small(event:MouseEvent):void 
    { 
     this.scaleX = valGrandX; 
     this.scaleY = valGrandY; 
    } 
} 

我的目標是讓剪輯變得更大,當用戶將鼠標懸停它,並返回到正常大小,當他徘徊在它之外。最終發生的事情是,當它擴大到更大的尺寸時,它會向底部和右側移動,並最終來回閃爍。

回答

1

當您設計MovieClip時,其中心標有小(+)。此點是MovieClip本身的(0,0)和MovieClip在其父座標中的(x,y)。當您使用AS3命令縮放/旋轉此MovieClip時,它會縮放/旋轉此點。您需要重新設計MovieClip的內容,以便將其平均放置在其(0,0)周圍,然後您將獲得「放大」效果。

如果您的影片剪輯出現「漏洞」或鼠標內容不一致,您可能會想要添加一個透明按鈕(僅限於第4幀 - 它是其命中區域)。

1

嘗試使用MouseEvent.MOUSE_OVERMouseEvent.MOUSE_OUT

檢查what is the difference between roll over and mouse over?

或者設置這樣的代碼:

private var valGrandX:Number; 
private var valGrandY:Number; 
public function Bonhomme_Fil() 
{ 
    valGrandX = this.scaleX; 
    valGrandY = this.scaleY; 

    addEventListener(MouseEvent.ROLL_OVER, big); 
} 
private function big(event:MouseEvent):void 
{ 
    //this.scaleX *= 1.5; 
    //this.scaleY *= 1.5; 
    this.scaleX = 1.5; 
    this.scaleY = 1.5; 

    removeEventListener(MouseEvent.ROLL_OVER, big); 
    addEventListener(MouseEvent.ROLL_OUT, small); 
} 
private function small(event:MouseEvent):void 
{ 
    this.scaleX = valGrandX; 
    this.scaleY = valGrandY; 

    addEventListener(MouseEvent.ROLL_OVER, big); 
    removeEventListener(MouseEvent.ROLL_OUT, small); 
} 
+0

嗨,我是已經嘗試過,並沒有奏效。似乎由於某種原因,x和y座標除了從左上角開始的比例之外還在變化。 – tomtom123456

+0

查看編輯答案。那麼你的問題是'this.scaleY * = 1.5'刪除乘數字符。 – Nemi

1

我想原因是,X,Y值沒有變化,請儘量參考this post

+0

嗨,我已經嘗試過,但似乎由於某些原因,x和y的值即使不在AS腳本中也會更改... – tomtom123456