Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как привязать класс к кнопке? (http://www.flasher.ru/forum/showthread.php?t=212175)

Comer 28.12.2015 17:11

Как привязать класс к кнопке?
 
Друзья! Прошу вашей помощи! Вот у меня есть код класса, который по идее должен закрывать, и тут же открывать приложение на мобильном телефоне:

Код AS3:

package
{
    import adobe.utils.ProductManager;
 
    import flash.desktop.NativeApplication;
 
    import mx.core.FlexGlobals;
    import spark.components.WindowedApplication;
 
    public function Reboot():void
    {
        var app:WindowedApplication = WindowedApplication(FlexGlobals.topLevelApplication);
 
        var mgr:ProductManager = new ProductManager("airappinstaller");
        mgr.launch("-launch "+app.nativeApplication.applicationID+" "+app.nativeApplication.publisherID);
        app.close();
    }
}

Подскажите, пожалуйста, как привязать этот класс к кнопке, чтобы он срабатывал после нажатия на неё? Я пока ещё не умею этого делать...

GBee 28.12.2015 18:13

По правде, сказать у вас и класса пока нет.

Comer 28.12.2015 19:41

Цитата:

Сообщение от GBee (Сообщение 1190286)
По правде, сказать у вас и класса пока нет.

Ну надо же... А меня убедили в том, что это именно класс, и что он работает. Я с классами ещё не очень-то знаком. Делаю в основном самые простые приложения...
А мне ТАК СИЛЬНО надо, чтобы приложение либо обновлялось без его закрытия, либо закрывалось, но тут же открывалось вновь. Очень долго ищу, и никак не могу найти нужное решение.
А Вы не могли бы мне с этим помочь?

КорДум 28.12.2015 20:01

Верно, это всего лишь глобальная функция в корневом пакете. Вызывается она как и обычная функция, разве что ее нужно импортировать:
Код AS3:

import Reboot;
 
btn.addEventListener(MouseEvent.CLICK, btn_clickHandler);
 
function btn_clickHandler(event:MouseEvent):void {
    Reboot();
}

Такого смысла код будет в итоге.

Comer 28.12.2015 20:06

Цитата:

Сообщение от КорДум (Сообщение 1190294)
Такого смысла код будет в итоге.

То есть мой код нужно вставить в файл as, а тот который показали мне Вы надо записать в fla? Я правильно Вас понял?

КорДум 28.12.2015 20:08

Да, как-то так.

Comer 28.12.2015 20:09

Цитата:

Сообщение от КорДум (Сообщение 1190296)
Да, как-то так.

Спасибо! Сейчас попробую... Не уверен, что получится. Я только начал учить использование классов...

Добавлено через 26 минут
Цитата:

Сообщение от КорДум (Сообщение 1190296)
Да, как-то так.

Ну, конечно, не получилось... Выводит ошибку:
C:\Users\Comer\Desktop\Example\ExampleClass.as, строка 1, столбец 1 5008: Имя определения "Reboot" не отображает местоположение этого файла. Измените имя определения внутри этого файла или переименуйте файл. C:\Users\Comer\Desktop\Example\ExampleClass.as
А какое имя надо дать файлу as, чтобы всё получилось? У меня файлы as и fla лежат в одной папке Example...

samana 28.12.2015 21:44

Если вы пишете в кадре, то попробуйте просто вот так (без создания никаких классов):
Код AS3:

import adobe.utils.ProductManager;
 
import flash.desktop.NativeApplication;
 
import mx.core.FlexGlobals;
import spark.components.WindowedApplication;
 
//ваша кнопка
btn.addEventListener(MouseEvent.CLICK, btn_clickHandler);
 
function btn_clickHandler(event:MouseEvent):void
{
        Reboot();
}
 
function Reboot():void
{
        var app:WindowedApplication = WindowedApplication(FlexGlobals.topLevelApplication);
 
        var mgr:ProductManager = new ProductManager("airappinstaller");
        mgr.launch("-launch " + app.nativeApplication.applicationID + " " + app.nativeApplication.publisherID);
        app.close();
}


zackscript 28.12.2015 21:45

Код AS3:

package 
{
        import adobe.utils.ProductManager;
 
        import flash.desktop.NativeApplication;
 
        import mx.core.FlexGlobals;
        import spark.components.WindowedApplication;
        public class useClass extends Sprite
        {
                public function useClass()
                {
                        btn.addEventListener(MouseEvent.CLICK,btn_clickHandler);
                }
                function btn_clickHandler(event:MouseEvent):void
                {
                        Reboot();
                }
                function Reboot():void
                {
                        var app:WindowedApplication = WindowedApplication(FlexGlobals.topLevelApplication);
 
                        var mgr:ProductManager = new ProductManager("airappinstaller");
                        mgr.launch(((("-launch " + app.nativeApplication.applicationID) + " ") + app.nativeApplication.publisherID));
                        app.close();
                }
 
        }
}


Comer 28.12.2015 21:56

samana
Выдаёт две ошибки:
Монтажный кадр 1, слой "Actions", кадр 1, строка 5, столбец 15 1172: Не удалось найти определение mx.core:FlexGlobals.

Монтажный кадр 1, слой "Actions", кадр 1, строка 6, столбец 24 1172: Не удалось найти определение spark.components:WindowedApplication.

zackscript
Тоже выдаёт ошибку, но другую:
Монтажный кадр 1, слой "Actions", кадр 1, строка 2, столбец 1 1037: Пакеты не могут быть вложенными.

Добавлено через 14 минут
Цитата:

Сообщение от samana (Сообщение 1190302)
Если вы пишете в кадре, то попробуйте просто вот так (без создания никаких классов)

Конечно, в кадре было бы проще, без всяких дополнительных файлов. Но всё равно не получается...


Часовой пояс GMT +4, время: 15:00.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.