0

我正在尝试使用 AIR SDK 编写一个 Playbook 应用程序,我需要某种可以加载大图像的表面,然后在其上放置一些较小的图像并将全部添加到 ScrollPane 以便我可以平移它在屏幕周围。

我尝试通过将图像添加到精灵并在应用程序的组中显示该图像,但图像没有显示。

我应该在这里使用什么正确的表面类型,我应该如何加载图像?(当前使用“嵌入”并将图像加载到 BitmapAsset。)

谢谢

编辑:

        var scroll:ScrollPane = new ScrollPane();

        scroll.setScrollContent(image);
        scroll.update();

        scroll.graphics.beginBitmapFill(icon.bitmapData);
        scroll.graphics.drawRect(100,100,56,56);
        scroll.graphics.endFill();

        scroll.update();

此代码导致在滚动内容后面绘制一个不移动的图标,我想在滚动内容的顶部添加一些东西,随着它移动。

4

2 回答 2

1

正如我在评论中提到的那样,您需要添加组件,而不是通过图形 api 添加图像。现在我知道您正在尝试使用 QNX 组件集,情况有所不同。

您需要做的是尽可能坚持使用 QNX 组件,否则它们可能无法在显示列表中正确更新(就像您正在经历的那样在背景中绘制的东西)

对于您应该使用这样的图像:

var newImg : qnx.ui.display.Image = new qnx.ui.display.Image();
newImage.setImage( youImgObj );

要添加您提到的容器,您应该使用(或类似的):

qnx.ui.core.Container

然后你应该会发现东西是以可预测的顺序绘制的(最后添加的 obj 在舞台顶部)。

于 2011-07-21T17:41:58.077 回答
0

制作您自己的自定义组件(您可以稍后将其放在 ScrollPane 上)并自己绘制图像 -

MyComp.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:ViewNavigatorApplication 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    firstView="views.MyCompHomeView">
</s:ViewNavigatorApplication>

意见\MyCompHomeView.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:comps="comps.*" title="HomeView">
    <comps:MyRect width="100%" height="100%"/>
</s:View>

comps\MyRect.mxml(绘制一个带有阴影的红色矩形):

<?xml version="1.0" encoding="utf-8"?>
<mx:UIComponent xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx"
    width="100%" height="100%">

    <fx:Script>
        <![CDATA[
            import flash.filters.*;

            public static const SHADOW:Array = [ 
                        new DropShadowFilter(10, 80, 0x000000, 
                        0.5, 32, 32, 1, 1, false, false, false) ];
            public static const GLOW:Array = [ 
                        new GlowFilter(0xFFFF00, 0.5, 
                        36, 36, 1, 1, false, false) ];

            private var rect:Shape = new Shape();

            override protected function createChildren():void {
                super.createChildren();
                rect.graphics.beginFill(0xFF0000);
                rect.graphics.drawRect(0, 0, 20, 20);
                rect.filters = SHADOW;
                addChild(rect);
            }

            override protected function updateDisplayList(
                        unscaledWidth:Number,
                        unscaledHeight:Number):void {

                super.updateDisplayList(
                    unscaledWidth, unscaledHeight);
                rect.x = unscaledWidth / 2;
                rect.y = unscaledHeight / 2;
            }
        ]]>
    </fx:Script>
</mx:UIComponent>
于 2011-07-22T08:56:50.777 回答