s:SpriteVisualElement和“此处不允许组件声明”

时间:2012-04-19 12:36:47

标签: flash flex flash-builder

看看以下代码。

<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:view="client.view.*" minWidth="955" minHeight="600">
    <s:Panel x="10" y="10" height="100%" title="CTW" borderColor="#008040" fontFamily="Arial" fontWeight="bold" fontSize="13">
        <s:HGroup>
            ...
            <s:Scroller id="canvasGroup" width="650" height="500">
                <s:Group>
                    <s:SpriteVisualElement>
                        <view:PNGCanvas id="canvas" />  <!-- error is thrown here -->
                    </s:SpriteVisualElement>
                </s:Group>
            </s:Scroller>
        </s:HGroup>
    </s:Panel>  
</s:Application>

PNGCanvas延伸flash.display.Sprite。我收到错误component declarations are not allowed here(在标有error is thrown here的行上)。这有什么不对?

提前谢谢!!!

3 个答案:

答案 0 :(得分:2)

你的代码应该是这样的......

<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"  
               minWidth="955" minHeight="600" xmlns:view="view.*"> 
    <s:Panel x="10" y="10" height="100%" title="CTW" borderColor="#008040" fontFamily="Arial" fontWeight="bold" fontSize="13"> 
        <s:HGroup>
            <s:Scroller id="canvasGroup" width="650" height="500"> 
                <s:Group> 
                    <view:PNGCanvas width="100" height="100"/> 
                </s:Group> 
            </s:Scroller> 
        </s:HGroup> 
    </s:Panel>   
</s:Application>

和PNGCanvas类应该由SpriteVisualElement

扩展
package view
{   
    import spark.core.SpriteVisualElement;

    public class PNGCanvas extends SpriteVisualElement
    {
        public function PNGCanvas()
        {
            super();
        }
    }
}

检查此代码......

答案 1 :(得分:0)

我很确定A SpriteVisualelement不能生成子项(在MXML中),因为它不是容器。

您可以更改PNGCanvas以扩展Canvas;然后使用它而不是你的SpriteVisualElement。

此外,您可以使用ActionScript将PNGCanvas实例作为子项添加到SpriteVisualElement;但它稍微复杂一点。

答案 2 :(得分:0)

由于这个原因,您的代码可能无法运行...

SpriteVisualElement类是一个基于Sprite的轻量级IVisualElement接口实现。 Spark容器可以布局并呈现SpriteVisualElement对象。 如果使用ActionScript将FXG组件添加到应用程序,则它应为SpriteVisualElement类型。