Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 将形状添加到stage as3_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 将形状添加到stage as3

Actionscript 3 将形状添加到stage as3,actionscript-3,flash,Actionscript 3,Flash,我不确定我是否已经或正在考虑这个问题,但是我有这个场景。我希望能够使用多个类(目前)在页面中添加一个三角形。第一个是将actionscript添加到flash中的帧中,第二个是实际的类。现在,我能做这个吗?还是我愚蠢地认为我可以?我希望这样做,这样我就可以创建一个动态创建的背景区域,在这个区域中,我可以与一个类进行交互 镜框上 import flash.display.Stage; var sides:Sides=new Sides(); stage.addChild(sides); this

我不确定我是否已经或正在考虑这个问题,但是我有这个场景。我希望能够使用多个类(目前)在页面中添加一个三角形。第一个是将actionscript添加到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");
        }
    }
}
我的问题是,实际的三角形没有出现在屏幕上,它是空白的。我知道构造函数是运行的,但是我没有得到实际的输出

我希望我说清楚了。如果有人能提出更好的解决方案,我很乐意听到。我的设想是这样的。
我希望创造一个其他电影剪辑可以互动的世界。我将创建线来表示它们。现在最好是动态生成,还是有一种方法可以让所有其他基类都运行在允许随机宽度的地方。希望这是清楚的。

您在边构造函数中创建了一个形状的实例,在该实例中绘制三角形,但该形状从未添加到显示列表中,而是将边实例(其本身未绘制任何图形)添加到显示列表中

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

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");
        }
    }
}

谢谢,成功了。我是否应该使用
stage.addChild(侧面)
此.addChild(侧面)有没有更好的方法来实现我的最终目标的想法?我不确定我是否100%理解了您最初的问题,但是您定义的任何类如果扩展了带有显示列表的任何内容(即DisplayObjectContainer、DisplayObject、Shape、Sprite、MovieClip),都可以将您的三角形添加到其中,类似于
var blob:mypriteextendingclass=newmypriteextendingclass();blob.addChild(新边())我是说,例如。我希望创建具有随机x长度的多条线。在固定地点或随机地点。如果这有道理的话?@milks这是不正确的。只有扩展了
DisplayObjectContainer
的对象才能添加子对象
DisplayObject
,并且只有选定的类才能访问
Graphics
类(这意味着它不是由
DisplayObject
本身实现的,而是由它的子对象实现的)。