制作一个简单的tamagoci游戏没有编译器错误但没有输出

时间:2015-01-09 17:53:39

标签: actionscript-3

一种新的动作脚本,我只是想制作一个简单的tamagoci游戏。我已经编写了所有代码,但没有收到编译器错误,但由于某种原因,我也没有收到任何鼠标事件监听器的输出消息。这是我的所有代码,我真的找不到问题,任何帮助将不胜感激。谢谢。

package{

import flash.display.MovieClip;
import flash.events.MouseEvent;

public class Main extends MovieClip{

    public var feedButton:MovieClip;
    public var tamagoci:MovieClip; 
    public var disButton:MovieClip;
    public var dietButton:MovieClip;

    public function Main() {
        this.init();
    }

    private function init():void {

        this.feedButton.addEventListener(MouseEvent.MOUSE_DOWN, onfeedMouseDownHandler); 
        this.disButton.addEventListener(MouseEvent.MOUSE_DOWN, ondisMouseDownHandler); 
        this.dietButton.addEventListener(MouseEvent.MOUSE_DOWN, ondietMouseDownHandler); 


    }

    private function onfeedMouseDownHandler(event:MouseEvent)void{
        this.tamagoci.scaleX += 0.1;
        this.tamagoci.scaleY += 0.1;
    }

    private function ondisMouseDownHandler(event:MouseEvent)void{
        this.tamagoci.gotoAndPlay(5);
}
private function ondietMouseDownHandler(event:MouseEvent)void{
        this.tamagoci.scaleX -= 0.1;
        this.tamagoci.scaleY -= 0.1;

}

1 个答案:

答案 0 :(得分:0)

您使用的是Flash Professional吗?

您在此处在班级中声明您的变量类型;

public var feedButton:MovieClip;
public var tamagoci:MovieClip; 
public var disButton:MovieClip;
public var dietButton:MovieClip;

但是在你的构造函数中,你所做的只是运行init();

public function Main() {
        this.init();
    }

所以,这可能是一些事情之一。最有可能的是你已经声明了你的变量,但你还没有初始化它们。您已创建了用于保存对象的变量,但根据您的代码,它们会被清空。更具体地说,不将对象分配给对象类型变量的变量或类属性将包含默认值null

您只需在init();方法中添加条件,就可以在代码中证明这一点;

if(tamagoci == null){
    trace("I haven't been assigned an object of type class yet!")
}

所以它可能是这3件事中的一件:

1:如果您已为这些类属性/变量编写了自己的类,则需要使用new关键字对它们进行实例化。一般语法是;

variable_name = new ClassName(parameter_1, parameter_2);

如果您使用自己编写的类,则必须创建对象的实例,将其分配给变量,然后使用addChild();将其添加到舞台。例如,假设您已经编写了自己的Tamagoci类;

tamagoci =新的Tamagoci(); tamagoci.x = 100; //设置x位置 tamagoci.y = 200; //设置y位置 的addChild(tamagoci);

请注意Tamagoci的使用。这只是一个例子,但这是类名,不应该与变量/属性名混淆。它可能很容易;

tamagoci = new MovieClip();

但是,这只是一个空的MovieClip。它需要一个属性才能在屏幕上显示。 Shape,A Bitmap或其他容器类对象,如MovieClipSprite(容器类允许您在其中嵌套显示对象)。但在基本层面上,必须包含一个可视组件才能出现在舞台上。

<强> 2

您是否已将Main作为文档课程?这是在播放Flash影片时自动调用的类。要设置此项,请单击您的舞台,然后在右侧的属性对话框的 PUBLISH 下,键入您的班级名称,即&#34; Main&#34;。

第3:

如果您已在Flash Professional库中创建了MovieClip,则需要转到库中,右键单击MovieClip,然后选择属性。从那里,您需要确保勾选 Export for Actionscript

现在,如果您点击舞台上的MovieClip,然后打开Flash Professional默认布局右上角的“属性”标签,则顶部右侧应为文本字段,如果您将鼠标悬停在它,实例名称将弹出为工具提示。这是您为舞台对象命名的地方。完成后,您可以在时间轴中访问它们。

如果您已完成此操作,则不需要在main类中声明变量,因为Flash Professional已在舞台上声明这些变量并自动实例化