actionscript 3 -如何访问AS3中的另一个类



对,我已经到处寻找这个问题的答案,但似乎没有人有和我一样的问题。我创建了3个类都是影片剪辑。其中2个就像按钮一样,所以当按下时,我希望第三个影片剪辑移动到左边或右边,但它提出了错误1119:通过静态类型Class的引用访问可能未定义的属性x。这3个类都链接在fla文件中,所以不知道为什么不像输入类名来访问它那么简单。下面是代码:

第一类(我想用鼠标按下移动):

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()
    {
    }
}



}

我建议你将游戏逻辑保持在单一类中,然后引用按钮。在这种情况下,您甚至不需要为按钮创建类。像这样…

//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;
}

谢谢你们的帮助,我重新阅读了一些关于类的内容,结果发现我忘记了文档类。我需要做的是使用文档类将影片剪辑导入舞台(从而创建它们的实例,又名实例化),然后我能够访问x和y属性。我对一个类是什么感到困惑,它只是文档类和fla之外的代码,链接到像电影剪辑这样的对象,并通过对象的所有实例分别运行到文档类。无论如何,这是我现在所拥有的,工作正常:)

文档类:

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()
    {
    }
}



}

最新更新