1

也许是一个简单的问题,但我在让按钮更改 Flex 黑莓剧本应用程序的视图时遇到了很多麻烦。我完全用 actionscript编码,没有 MXML。

myButton.addEventListener(MouseEvent.CLICK, doSomethingOnClick);

private function doSomethingOnClick(e:MouseEvent):void {
    navigator.pushView(view.Login, "testdata");
}

当我尝试这个时,我得到:

1120:访问未定义的属性导航器。

这很奇怪,因为它在 MXML 文件中工作。如何更改 actionscript 中的视图?

谢谢菲尔

编辑: 欢呼 J_A_X,但现在我有:

navigator = new ViewNavigator();
navigator.pushView(net.airpoint.assessments.view.Login, " ");

TypeError:错误 #1009:无法访问空对象引用的属性或方法。

道歉,因为我意识到这真的很简单,但它只是没有点击!

更新 2 * Assessments.as *

package
{
    import flash.display.Sprite;
    import flash.events.Event;

    import net.airpoint.assessments.view.*;

    import qnx.ui.core.Container;
    import qnx.ui.core.ContainerAlign;
    import qnx.ui.core.ContainerFlow;
    import qnx.ui.core.Containment;
    import qnx.ui.text.Label;

    import spark.components.ViewNavigator;

    [SWF(height="600", width="1024", frameRate="30", backgroundColor="#FFFFFF")]

    /* Main Layout */

    public class Assessments extends Sprite
    {
        //containers 
        private var main:Container;
        private var menu:Container
        private var firstLabel:Label;
        private var navigator:ViewNavigator;


        public function Assessments()
        {
            initializeUI();
        }

        private function initializeUI():void
        {
            main = new Container();
            main.padding = Vector.<Number>([20,20,20,20]);
            main.flow = ContainerFlow.HORIZONTAL;
            main.debugColor = 0xFFCC00;

            firstLabel = new Label();
            firstLabel.text = "First label";
            firstLabel.size=35;

            main.addChild(firstLabel);

            addChild(main);

            navigator = new ViewNavigator();
            navigator.pushView(Login, " ");

        }
    }
}

登录名

package net.airpoint.assessments.view
{
    import flash.display.Sprite;
    import flash.events.MouseEvent;

    import qnx.ui.buttons.Button;
    import qnx.ui.core.Container;
    import qnx.ui.text.Label;
    import qnx.ui.text.TextInput;

    import spark.components.View;

    public class Login extends View
    {

        private var usernameLabel:Label;
        public function Login()
        {
            initializeUI();
        }

        public function initializeUI():void
        {
            usernameLabel.text = "test";

            this.addChild(usernameLabel);
        }               
    }
}
4

2 回答 2

0

有什么不对劲。如果它是一个 Flex 移动项目,您需要一个Application顶级项目(您知道,就像 Flash Builder 如何使用 mxml 文件创建项目一样)。您可以创建一个扩展应用程序的操作脚本文件,如此处所述,或者您只使用一个 mxml 文件作为根组件。

但是,如果您使用 Flex 组件,则“不使用 mxml”的论点是多余的。如果您使用 Flex 组件,那么无论如何您都在使用 mxml,因此不会提高性能。如果有的话,RIM 建议仅使用 AS,因为他们的 SDK 仅是 AS(无论如何这都是愚蠢的)。您始终可以通过 AS 在 mxml 文件中添加他们的 UI 组件。

所以真的,重点是没有实际意义的,无论如何你都应该使用 mxml,因为它比直接 AS 更好地用于 UI 布局和皮肤。要么选择没有 Flex 组件的 Pure AS。

于 2011-04-12T15:48:54.237 回答
0

我认为在 ActionScript 项目中使用Sprite是可以的。

但是,如果您只是因为QNX 组件而使用 ActionScript 而不是 Flex ,那么您可以将您的项目切换到 Flex并按照以下说明在其中使用 QNX 组件:Using qnx.ui.picker.Picker in mobile Flex Hero project for黑莓手册

于 2011-04-13T09:44:57.977 回答