Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Другие основы AS3 (http://www.flasher.ru/forum/showthread.php?t=104463)

biosid 26.11.2007 12:20

Другие основы AS3
 
Спасибо всем за уроки и статьи, везде вроде всё понятно, но все как-то описывают одно направление - программное рисование, движение и т.п.
А у меня другая простая задача:
1. Т.к. рута как такового не осталось, как объявить общую переменную и потом как к ней обратиться из рзных мест?
2. Как работать с SimpleButton? Как описать обычные события? Наведение, нажатие, отпускание? Неужели для каждой кнопки нужно создавать свой *.as?
Вобщем хотел бы для примера реализовать такую задачу:
На сцене к примеру 5 кнопок but1, but2 и т.д. и одна кнопка getresult.
При нажатии на одну из пяти устанавливается глобалная переменная в своё значение. А при нажатии на getresult делать к примеру trace этого значения.
Кто чем поможет?

7thsky™ 26.11.2007 12:39

Во первых, Вам точно нужен АС3? а АС3 есть еще Runtime Exceptions.

1. Уже обсуждалось так что в поиск

2. В хелп - в справке по этому классу в самом вверху есть пример как использовать без создания класса.

biosid 26.11.2007 13:20

Конечно мне нужен AS3.
Хорошо, по глобальным посомтрим, но SimpleButton в примере немного не то описывает. Или может я не так выразился. Кнопки я не программно рисовать хочу, а ручками (как раньше) и потом тамописывают upSprite и т.д. а я хочу понять про upFunction

7thsky™ 27.11.2007 10:37

ну так и рисуй ручками, во флэше, в чем проблема? создаешь кнопку на таймлайне (лучше две), задаешь имя инстанса, например btn1 и btn2, во фрэйме пишешь

Код:

btn1.addEventListener (MouseEvent.CLICK,
        btnClickHandler, false, 0, true);

btn2.addEventListener (MouseEvent.CLICK,
        btnClickHandler, false, 0, true);

function btnClickHandler (evt:MouseEvent):void {
        var index:int = parseInt (evt.target.name.slice (3));
       
        Global.getInstance ().selectedSection = index;
}

код класса Global
Код:

package {
       
        import flash.events.*;
       
        public class Global
        extends EventDispatcher {
               
                public static const SELECTED_SECTION_CHANGED:String = 'selectedSectionChanged';
               
                private var _selectedSection:int = -1;
               
                public function Global () {
                }
               
                public function get selectedSection ():int {
                        return _selectedSection;
                }
               
                public function set selectedSection (value:int):void {
                        if (_selectedSection != value) {
                                _selectedSection = value;
                               
                                trace ('selectedSection: ' + value);
                                dispatchEvent (new Event (SELECTED_SECTION_CHANGED));
                        } // end if
                }
               
                private static var instance:Global = null;
                public static function getInstance ():Global {
                        if (instance == null) {
                                instance = new Global ();
                        } // end if
                        return instance;
                }
        }
}

в любом другом месте пишешь
Код:

Global.getInstance ().addEventListener (Global.SELECTED_SECTION_CHANGED, selectedSectionChangedHandler, false, 0, true);

function selectedSectionChangedHandler (evt:Event):void {
// тут реагируй на изменение как твоей душе угодно
}


biosid 27.11.2007 12:23

Спаибо! Чуть позже почитаю, разберусь.
Но меня волнует ещё то, что одни пишут "забываем писать код в кадрах", а другие вот так.

7thsky™ 27.11.2007 13:21

А не надо быть ортодоксом, код в кадрах - это грех?! По мне так все зависит от проекта, большой проект, много кода, действительно грех.
Маленький проект? почему бы и нет если проект такой что быстро сделал и забыл?

Потом не все сразу могут перейти от парадигмы что весь код в кадрах, на - все в классах, все супер пупер заООПено, вариант с заменной _global на класс Global в которым ты декларируешь все общие переменные, сам по себе не плох и прост (и по сущности похожь на модель аппликации, что уже совсем не плохо для начала)

biosid 27.11.2007 17:00

Блин, да это ж не конечная задача! Я просто на примере хотел понять.
Я знаю как в кадрах это решается...


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

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