Создание кнопки ссылки - Adobe Flex - Blackberry Playbook - PullRequest
1 голос
/ 12 апреля 2011

Возможно, простой вопрос, но у меня много проблем с тем, чтобы заставить кнопку изменить вид приложения Flex Blackberry Playbook. Я кодирую его полностью в Actionscript , без MXML.

myButton.addEventListener(MouseEvent.CLICK, doSomethingOnClick);

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

Когда я пытаюсь это сделать, я получаю:

1120: доступ к неопределенному навигатору свойств.

Что странно, так как работает в файле MXML. Как изменить представления в ActionScript?

Спасибо Фил

EDIT: Приветствие J_A_X, но теперь у меня есть:

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

Ошибка типа: ошибка # 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, " ");

        }
    }
}

Login.as

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);
        }               
    }
}

Ответы [ 2 ]

0 голосов
/ 13 апреля 2011

Я думаю, что использование Sprite нормально в проекте ActionScript.

Но если вы используете ActionScript вместо Flex только из-за компонентов QNX , тогда вы можете переключить свой проект на Flex и следовать этим инструкциям, чтобы использовать там компоненты QNX. : Использование qnx.ui.picker.Picker в мобильном проекте Flex Hero для Blackberry Playbook

0 голосов
/ 12 апреля 2011

Что-то не так. Если это Flex Mobile Project, вам нужен Application на верхнем уровне (вы знаете, например, как Flash Builder создал проект с файлом mxml). Либо вы создаете файл actioncript, который расширяет Application , как указано здесь , либо вы просто используете mxml-файл для корневого компонента.

Однако ваш аргумент «не использовать mxml» является излишним, если вы используете компоненты Flex. Если вы используете компоненты Flex, вы используете mxml, несмотря ни на что, поэтому повышение производительности не происходит. Во всяком случае, RIM рекомендует использовать AS только потому, что их SDK только AS (что в любом случае идиотизм). Вы всегда можете добавить их компонент пользовательского интерфейса через AS в mxml файлах.

Так что, на самом деле, вопрос спорный, и вы все равно должны просто использовать mxml, так как это лучше, чем прямой AS для макета пользовательского интерфейса и скинов. Либо так, либо иди Pure AS без компонентов Flex.

...