在Flex中显示AS3代码的问题

时间:2011-09-23 20:03:24

标签: flex actionscript-3

我有AS3脚本bitfade.text.steel返回类型Sprite。它适用于Flash环境,但不适用于FLEX。在Flex中它什么都不显示。没有错误出现。它看起来像附加的代码也有效。我使用Flex SDK 4.5

你能告诉我这段代码的问题是什么吗?

英语不是我的母语。 如果有任何错误,请纠正我。

克里斯

<?xml version="1.0" encoding="utf-8"?>                                                                              
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"                                                     
                xmlns:s="library://ns.adobe.com/flex/spark"                                                         
                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"                            
                creationComplete="creationComplete();" >                                                            
    <fx:Declarations>                                                                                               
        <!-- Place non-visual elements (e.g., services, value objects) here -->                                     
    </fx:Declarations>                                                                                              
    <fx:Script>                                                                                                     
        <![CDATA[                                                                                                   
            import bitfade.text.steel;                                                                              
            import flash.display.Sprite;                                                                            
            import mx.core.UIComponent;                                                                             

            function creationComplete(){                                                                            
                var textSteel = new steel("config.xml");                                                            
                if(textSteel is Sprite){                                                                            
                    trace("it is a sprite");                                                                        
                }                                                                                                   
                //var textSteelName:String = getQualifiedClassName(textSteel);                                      
                //trace(textSteelName);                                                                             
                textSteel.x = 150;                                                                                  
                trace("this is visible on the screen");                                                             
                var sprite:Sprite = new Sprite();                                                                   
                sprite.graphics.beginFill(0xFFCC00);                                                                
                sprite.graphics.drawCircle( 40, 40, 40 );                                                           
                sprite.graphics.endFill();                                                                          

                var wrapper:UIComponent = new UIComponent();                                                        
                wrapper.addChild(sprite);                                                                           
                wrapper.addChild(textSteel);                                                                        
                animationStage.addElement(wrapper);                                                                 
            }                                                                                                       
        ]]>                                                                                                         
    </fx:Script>                                                                                                    
    <s:Group id="animationStage" visible="true" x="50" y="50">                                                      
        <s:Label text="test">                                                                                       

        </s:Label>                                                                                                  
    </s:Group>                                                                                                      
</s:WindowedApplication>                                                                                            

2 个答案:

答案 0 :(得分:3)

如果我将自定义类切换为Sprite,并在其上绘制一些东西,它就会显示出来。因此,我相信你的钢铁课程中存在一个错误。精灵没有任何大小,直到有一个大小的内部。没有迹象表明您已经展示了钢铁类内部发生的代码。

我的样本:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="creationComplete();">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>                                                                                                     
        <![CDATA[                                                                                                   
//          import bitfade.text.steel;                                                                              
            import flash.display.Sprite;

            import mx.core.UIComponent;                                                                             

            public function creationComplete():void{                                                                            
                var textSteel : Sprite = new Sprite();                                                            
                if(textSteel is Sprite){                                                                            
                    trace("it is a sprite");                                                                        
                }                                                                                                   

                //var textSteelName:String = getQualifiedClassName(textSteel);                                      
                //trace(textSteelName);                                                                             
                textSteel.x = 150;                                                                                  

                // JH Code added new
                textSteel.graphics.beginFill(0xFFCC00);                                                                
                textSteel.graphics.drawRect(0,0,100,100);                                                           
                textSteel.graphics.endFill();                                                                          

                trace("this is visible on the screen");                                                             
                var sprite:Sprite = new Sprite();                                                                   
                sprite.graphics.beginFill(0xFFCC00);                                                                
                sprite.graphics.drawCircle( 40, 40, 40 );                                                           
                sprite.graphics.endFill();                                                                          

                var wrapper:UIComponent = new UIComponent();                                                        
                wrapper.addChild(sprite);                                                                           
                wrapper.addChild(textSteel);                                                                        
                animationStage.addElement(wrapper);                                                                 
            }                                                                                                       
        ]]>                                                                                                         
    </fx:Script>                                                                                                    
    <s:Group id="animationStage" visible="true" x="50" y="50">                                                      
        <s:Label text="test">                                                                                       

        </s:Label>                                                                                                  
    </s:Group>      

</s:WindowedApplication>

答案 1 :(得分:0)

我认为您需要设置wrapper UIComponent实例的宽度和高度。

UIComponents不会自动调整其内容的大小,因此它的宽度和高度为0。