我正在使用一个带有主mxml文件和两个绘制图形的actionscript类的flex项目。从阅读大量的文章和帖子,我发现他们必须扩展UIComponent,他们这样做。第一个actionscript类可以很好地绘制图像。然后第一个类调用以创建一个新对象。第二个对象不显示。在纯动作脚本版本中,我必须将舞台作为第二个类绘制的参考。
我在stackoverflow上也发现了一个类似的问题: UIComponent extended class isn't showing UIComponent extended class。但我不确定如何将它应用到我的例子中。
其中,是否应覆盖任何UIComponent方法以显示第二个对象?具体应该如何在这个例子中实现它们?
如果对这个问题有更好或更简单的答案,那也是值得赞赏的。这是我在一个更复杂的项目中遇到的问题的简化示例。
// First class "Ball" draws a circle successfully then creates a second object "MyRect"
package dr {
import flash.display.*;
import flash.display.Sprite;
import mx.core.*;
public class Ball extends UIComponent {
public function Ball()
{
var vCircle:Sprite = new Sprite();
vCircle.graphics.beginFill(0xff0000);
vCircle.graphics.drawCircle(100, 150, 40);
vCircle.graphics.endFill();
addChild(vCircle);
var rect:MyRect = new MyRect();
}
}
}
// Second class "MyRect" (does not display)
package dr {
import flash.display.*;
import flash.display.Sprite;
import flash.events.*;
import flash.geom.*;
import mx.core.*;
public class MyRect extends UIComponent
{
public function MyRect()
{
var vRect:Sprite = new Sprite();
vRect.graphics.beginFill(0x0000ff, 1);
vRect.graphics.drawRect(300, 150, 150, 75);
addChild(vRect);
//var ui:UIComponent = new UIComponent();
//addChild(ui);
//ui.addChild(vRect);
//UpdateDisplayList();
}
}
}
//Here is the MXML main file:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:dr="dr.*"
minWidth="955" minHeight="600">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<mx:Panel id="myPanel" width="700" height="600" paddingLeft="10" paddingTop="10">
<dr:Ball></dr:Ball>
</mx:Panel>
</s:Application>
答案 0 :(得分:2)
在Ball类中,实例化一个新的MyRect类;但是,你不要把它添加到舞台上:
var rect:MyRect = new MyRect();
addChild(rect);
答案 1 :(得分:0)
vRect.graphics.endFill();
缺失。