【问题标题】:Subclassing Classes and Using Booleans in AS3在 AS3 中子类化和使用布尔值
【发布时间】:2013-02-15 12:32:55
【问题描述】:

两个问题;这次没有代码,但它们应该很简单。

1) AS3 想让我继承一个扩展 Stage 的类;我不知道如何做到这一点,因为它在包的行上给出了错误...... 代码基本上是:

package
{
    import flash.whatever.Stage
    public class thisclass extends Stage
    {
        public function thisclass()
        {
        }
    }
}

不确定我的所有大写字母是否正确,我在学校有代码。我需要在函数中添加一些东西吗?如果有呢?

2) AS3 还希望我对变量使用属性。 var I:布尔值; 如果(我 == 真) 错误在 if 行... 我应该将其声明为 I.something 吗?改成小写? (会测试但我在学校时没有想到)

更新:我尝试使用 .value 并声明和使用布尔值作为 .something,没有任何效果,也没有尝试使用小写字母......也无法让我的空白舞台类工作...... 另一个问题:switch case 的 import flash.whatever.whatever 是什么?

新的东西:

package
{
    import flash.events.* 
    import flash.ui.*
    import flash.display.MovieClip

    public class tank extends MovieClip 
    {
        var ii:Boolean; var kk:Boolean; var ww:Boolean; var ss:Boolean;
        public function tank()
        {
            this.addEventListener(Event.ENTER_FRAME, update);
            stage.addEventListener(KeyboardEvent.KEY_UP, keyup);
            stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
            this.x = 500; this.y = 500;
        }

        public function update(event:Event):void
        {
            var rotang = 0;
            var speed;
            if(ii==true)
            {
                rotang = rotang + 1;
            }
            if(kk==true)
            {
                rotang = rotang - 1;
            }
            if(ww==true)
            {
                rotang = rotang - 1; 
            }
            if(speed > 0)
            {
                speed = speed - 1;
            }
            if(speed < 0)
            {
                speed = speed + 1;
            }
            if(ss==true)
            {
                rotang = rotang + 1;
            }
            if(ii==true && ww==true)
            {
                speed = speed + 3;
            }
            if(kk==true && ss==true)
            {
                speed = speed - 3;
            }
            if(speed > 30)
            {
                speed = 30;
            }
            if(speed < -30)
            {
                speed = -30;
            }
            var vy =  Math.sin(this.degreesToRadians(rotang))*speed;
            var vx = Math.cos(this.degreesToRadians(rotang))*speed;
            this.y = this.y + vy;
            this.x = this.x + vx;
            this.rotation = rotang * Math.PI / 180;
        }
        public function degreesToRadians(param1:Number) : Number
        {
            return param1 * Math.PI / 180;
        }
        public function keyup(event:KeyboardEvent):void
        {
            switch(event.keyCode) 
            {
                case 87 :
                        ww = false;
                        break;
                case 83 :
                        ss = false;
                        break;
                case 73 :
                        ii = false;
                        break;
                case 75 :
                        kk = false;
                        break;
            }
        }

        public function keydown(event:KeyboardEvent):void
        {
            switch(event.keyCode) 
            {
                case 87 :
                        ww = true;
                        break;
                case 83 :
                        ss = true;
                        break;
                case 73 :
                        ii = true;
                        break;
                case 75 :
                        kk = true;
                        break;
            }
        }
    }
}

【问题讨论】:

  • AS3 是一种编程语言,它真的想要你做这些事情吗? :) 但是说真的,你不能创建一个扩展 Stage 类的类。如果可以(意味着它不会产生编译错误),我不确定你会用它做什么。当他们说它有效时,我不确定下面的答案是什么意思。但也许我今天要学点新东西。 PS:我们通常通过扩展 Sprite 或 MovieClip 类来启动我们的应用程序,这些东西是添加到舞台上的。
  • @SunilD。您可以扩展 Stage,它没有被声明为 final,但除非有人设法用他自己的子类实例替换 Flash 的本机阶段,否则它不会有太大用处。而对于 user1743752,Sunil 是对的,你可以扩展 Sprite 或 MovieClip。
  • @Vesper,谢谢!我学到了一些东西 :) 我只是尝试在 Flash Builder 中扩展 Stage 类并编译它。但很高兴我至少对这样做的“有用性”是正确的。
  • 凹凸。如果我只是将其留空而没有包装或任何会导致问题的东西,我该怎么做而不是舞台课?我把要连接到舞台的类放在.fla文件中...
  • 哦,关于扩展舞台的事情是一个错误,显然舞台的类应该是扩展电影剪辑的形式......

标签: actionscript-3 flash


【解决方案1】:

试试这个:

package 
{
  import flash.display.MovieClip;

public class myClass extends MovieClip
{
    private var bln:Boolean = false;

    public function myClass()
    {
        if (bln == false)
        {
            trace("Value of boolean is false");
        }
     }
  } 
}

这是有效的。

【讨论】:

  • 嗯...我会检查的;作为对其他 cmets 的回应:它要求我使用我为 .fla 文件中的 .fla 文件指定的类...就是这样... 编辑:布尔值呢? (如果没有回复,将尝试小写和 .something...)
  • 这些都不起作用,你确定你在 AS3 中尝试过而不是在 AS2 中吗?
  • 我所看到的只是你将 bln 布尔值设置为 false,我记得我在学校时尝试过。 (我可以访问闪存...)
  • 我认为这就是你所需要的,这就是我写这个的原因。如果你想要别的东西,你必须清楚地提到它。
  • 我弄清楚了布尔值和子类化的问题是什么......现在我只需要弄清楚我的开关案例的问题。我正在使用 switch(event.keysomething) (不要记住 100%)并且事件部分未声明/已知/无论如何...我需要限制事件还是将其设为 e:event 或两者兼而有之?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 2012-07-27
相关资源
最近更新 更多