将形状添加到舞台as3

时间:2013-12-13 16:41:43

标签: actionscript-3 flash

我不确定我是否已经超过或者在想这个但是我有这种情况。我希望能够使用多个类向页面添加(现在)三角形。第一个是将动作脚本添加到flash中的帧,第二个是实际的类。现在,我可以这样做吗?或者我愚蠢地认为我可以吗?我希望这样做,所以我可以创建我的背景作为一个动态创建的区域,我认为我可以与之交互作为一个类的实例。

在框架

import flash.display.Stage;

var sides:Sides=new Sides();
stage.addChild(sides);
this.addChild(sides);

上课

package  {
    import flash.display.Shape;

        public class Sides extends Shape {
            public function Sides() {
                var triangleHeight:uint = 100; 
            var triangle:Shape = new Shape(); 

            // red triangle, starting at point 0, 0 
            triangle.graphics.beginFill(0xFF0000); 
            triangle.graphics.moveTo(triangleHeight / 2, 0); 
            triangle.graphics.lineTo(triangleHeight, triangleHeight); 
            triangle.graphics.lineTo(0, triangleHeight); 
            triangle.graphics.lineTo(triangleHeight / 2, 0);
            triangle.graphics.endFill();
            trace("Into construct");
        }
    }
}

我遇到的问题是屏幕上没有显示实际的三角形,它是空白的。我知道构造函数已经运行,但是我没有得到实际的输出。

我希望自己清楚明白。如果有人能提出更好的解决方案,我很乐意听到。我的情况是这样的。 我希望创建一个其他电影剪辑可以与之互动的世界。我将创建代表他们的线条。现在动态生成它是否更好?或者有一种方法可以使用某种基类,使所有其他基类运行,从而允许我具有随机宽度。希望这很清楚。

1 个答案:

答案 0 :(得分:1)

在Sides构造函数中创建一个Shape实例,您可以在其中绘制三角形,但是这个形状永远不会添加到显示列表中,而是将您的Sides实例(它本身没有绘制任何内容)添加到显示列表中。

因为你的Sides类正在扩展Shape,所以你不需要另一个Shape实例,你的Sides本身就是一个Shape,你可以像这样直接绘制它:

package  {
    import flash.display.Shape;

        public class Sides extends Shape {
            public function Sides() {
                var triangleHeight:uint = 100;

                // red triangle, starting at point 0, 0 
                this.graphics.beginFill(0xFF0000); 
                this.graphics.moveTo(triangleHeight / 2, 0); 
                this.graphics.lineTo(triangleHeight, triangleHeight); 
                this.graphics.lineTo(0, triangleHeight); 
                this.graphics.lineTo(triangleHeight / 2, 0);
                this.graphics.endFill();
                trace("Into construct");
        }
    }
}