2014-05-05 39 views
0

對,我已經搜索了高和低的答案,但沒有人似乎與我有同樣的問題。我已經創建了3個類,它們都是動畫片段。其中2個像按鈕,所以當按下時,我希望第三個影片剪輯移動到左側或右側,但它出現錯誤1119:通過靜態類型類的引用訪問可能未定義的屬性x。這三個類都鏈接在fla文件中,所以不知道爲什麼它不像輸入類名稱來訪問它那麼簡單。反正這裏是代碼:如何訪問AS3中的其他課程

第一類(我想用鼠標按下移動):

package code 
{ 
import flash.display.MovieClip; 

public class Walking extends MovieClip 
{ 
    public function Walking() 
    { 
     x = 600; 
     y = 350; 

     gotoAndStop(1); 
    } 
} 

} 

二等:

package code 
{ 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 

public class Left extends MovieClip 
{ 
    public function Left() 
    { 
     addEventListener(MouseEvent.MOUSE_DOWN, moveleft); 
    } 

    protected function moveleft(event:MouseEvent):void 
    { 
     Walking.x += -10; 
    } 
} 







} 

三等:(沒有帶編碼還)

package code 
{ 
import flash.display.MovieClip; 

public class Right extends MovieClip 
{ 
    public function Right() 
    { 

    } 
} 







} 
+1

您正試圖訪問Walking類的靜態屬性,您需要實例化一個類型爲Walking的新對象,然後訪問x屬性。你當前確實正在訪問另一個類,但是試圖訪問一個無效的靜態屬性(x),你應該再次讀到As3中的類,而不是先於自己。 – Xela

回答

0

我建議你將遊戲邏輯保存在一個類中,然後引用按鈕。在這種情況下,你甚至不需要按鈕的類(還)。 事情是這樣的......

//Game.as 
var arrowLeft : MovieClip; 
var arrowRight : MovieClip; 
var walker : MovieClip; 

function Game() 
{ 
    arrowLeft.addEventListener(MouseEvent.CLICK, OnClickLeft); 
    arrowRight.addEventListener(MouseEvent.CLICK, OnClickRight); 
} 

function OnClickLeft(pEvent : MouseEvent) : void 
{ 
    Walk(-speed); 
} 

function OnClickRight(pEvent : MouseEvent) : void 
{ 
    Walk(speed); 
} 

function Walk(pSpeed : Number) : void 
{ 
    walker.x += pSpeed; 
} 
0

感謝您的幫助球員,我重讀了多一些的類,它原來我忘了文檔類。我需要做的是將影片剪輯導入到使用文檔類的階段(因此創建它們的實例,也就是實例化),然後我可以訪問x和y屬性。我對於什麼是類是困惑的,它只是在文檔類和fla之外的代碼,它鏈接到像movieclip這樣的對象,並通過對象的所有實例單獨運行到文檔類。反正這裏是我現在工作的罰款:)

文檔類:

package { 

import flash.display.MovieClip; 
import code.Walking; 
import code.Left; 
import code.Right; 
import flash.events.MouseEvent; 


public class gameWalk extends MovieClip { 

    public var walker:Walking; 
    public var left:Left; 
    public var right:Right; 

    public function gameWalk() 
    { 
     walker = new Walking(); 
     left = new Left(); 
     right = new Right(); 

     addChild(walker); 
     addChild(left); 
     addChild(right); 

     walker.x = 640; 
     walker.y = 360; 
     left.x = 65; 
     left.y = 660; 
     right.x = 1200; 
     right.y = 660; 

     createListeners() 

    } 

    public function createListeners():void 
    { 
     left.addEventListener(MouseEvent.CLICK, moveLeft); 
     right.addEventListener(MouseEvent.CLICK, moveRight); 
    } 

    public function moveLeft(event:MouseEvent):void 
    { 
     walker.x += -10; 
    } 

    public function moveRight(event:MouseEvent):void 
    { 
     walker.x += 10; 
    } 
} 

} 

散步:

package code 
{ 
import flash.display.MovieClip; 

public class Walking extends MovieClip 
{ 
    public function Walking() 
    { 
     gotoAndStop(1); 
    } 
} 









} 

左:

package code 
{ 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 

public class Left extends MovieClip 
{ 
    public function Left() 
    { 

    } 
} 







} 

右:

package code 
{ 
import flash.display.MovieClip; 

public class Right extends MovieClip 
{ 
    public function Right() 
    { 

    } 
} 







} 
相關問題