繁体   English   中英

如何在AS3中访问另一个类

[英]How to access another class in AS3

是的,我一直在寻找答案,但似乎没有人遇到与我相同的问题。 我已经创建了3个类,所有这些类都包含动画片段。 它们中的2个就像按钮,因此在按下时我希望第3个动画片段向左或向右移动,但出现错误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()
    {

    }
}







}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM