Форум 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=147277)

Psycho Tiger 30.11.2010 23:54

Цитата:

А кода экономит кучу. Вместо кучи подписок, я в родительском классе просто делаю функцию и всё ок.
...Одну строчку?

Ладно, по пацански. Как бабблинг делать будете?

Dukobpa3 01.12.2010 00:05

Цитата:

...Одну строчку?
а хоть и одну:) подписка на событие одним словом в разы удобнее чем подписка целой фразой.

Цитата:

Ладно, по пацански. Как бабблинг делать будете?
так же как все:)

Код AS3:

var DO:DisplayObject = new DisplayObject(); //ну тут кучу кода не привожу, в дисплайобжекте что-то визуальное должно быть.
var button:UniversalButton = new UniversalButon(DO, false, false, clickFunk);
 
button.addEventListener(MouseEvent.CLICK, clickFuncBubbl, true, false);
button.addEventListener(MouseEvent.CLICK, clickFuncStd);
 
private function clickFunk(source:UniversalButton):void{
      //Это мой обработчик
}
 
private function clickFunkBubbl(e:MouseEvent):void{
      //Это стандартный с бабблингом
}
 
private function clickFunkStd(e:MouseEvent):void{
    //это стандартный по-умолчанию, по сути дубль моего обработчика за исключением того что сюда приходит не таргет а полностью событие.
}

Добавлено через 27 минут
кстати, забыл упомянуть.

конструктор батона вполне может принимать в качестве функции-обработчика клика - null.

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

КорДум 01.12.2010 02:14

У меня сделано так: юзверь интерфейс кнопки содержит в себе базовый функционал и базовые сеттеры-геттеры для стейтов. Далее идеть россыпь классов - обычная кнопка, кнопка-текст и как бонус - кнопка с текстом. Никаких колбеков, опять же, бонуса ради у кнопки-текста - сеттер url:String, вешающий на клик обычный переход по ссылке. Ничего плохого в таком подходе я не вижу.

XDiaBLo 01.12.2010 09:49

Цитата:

Сообщение от Anton Riot (Сообщение 953755)
стандартная кнопка есть в стандартных компонентах. Кроме этого, в них ещё много чего стандартного :)

:))) Под стандартными компонентами вы поди имеете в виду накидать кнопок из панельки сбоку у Adobe Flash CS? Я его не использую :) А во FlashDevelop программно создать, гемморой целый.

З.Ы. Я вечером ещё раз гляну всё что тут написали, но пока я скажу, что вчера вечером взял VKButton из АПИ вк онтакте, и переделал как нужно. Эта кнопка конечно странная малость, я ещё поработаю над ней, но более менее работает, сделана на основе SimpleButton. В принципе раз я делаю приложение для Вк онтакте, то ничего страшного что дёрну пару заготовок из их же корявых примеров. Лишь бы работало как следует.

goodguy 01.12.2010 11:22

Цитата:

А во FlashDevelop программно создать, гемморой целый.
Так уж и гемморой. Я уже много раз это делал во флеш девелоп, даже мысли не возникало, что это сложно

На крайняк всегда можно сделать собственную кнопку. Уж это явно не сложная задача ;)

Котяра 01.12.2010 12:39

Вопрос, наверное, состоял в том, что FD не видит классы флэшевских компонент.
Решение: создайте swc либу компонент, либо скачайте её здесь.
И подключите её к FD.

Psycho Tiger 01.12.2010 15:46

@Dukobpa3, и в итоге будет каша непонятная. Где подписались так, где подписались иначе.

Я был невменяем когда писал про бабблинг. Какой нафиг "делать бабблинг" у событий мыши? А Вы мне вообще про каптюр фазу писали.

sikha 15.05.2011 01:45

Цитата:

Сообщение от XDiaBLo (Сообщение 953747)
Access of undefined property ComponentEvent.

Добавлено через 49 секунд

Мда, ну это ведь тоже изврат, стандартной кнопки для использования из ActionScript нет нормальной?

А у меня вот не работает и даже с import'ом !(((

Добавлено через 54 секунды
еще в силу кнопок! Тоже есть такая вопрос как создать кнопку программно! может кто-то поделится своим классом для кнопки???
у меня вот такой код есть
Код AS3:

        package 
{
        import flash.display.SimpleButton;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.display.*;
 
 
        public class Main  extends Sprite
        {
 
 
 
                public function Main():void
                {
                        var bt:SimpleButton = new SimpleButton();
                        addChild(bt);
                        bt.addEventListener(MouseEvent.CLICK, btClick);
                }
 
 
 
        public function btClick():void {
                                trace("But clicked");
                        }
 
        }
 
}

но ни капельки не работает (((

КорДум 15.05.2011 01:57

sikha, смотрим сюда: http://help.adobe.com/ru_RU/AS3LCR/F...leButton%28%29


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

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