Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   замена upState у кнопки (http://www.flasher.ru/forum/showthread.php?t=157762)

КорДум 10.06.2011 15:15

Цитата:

Загрузки то дождались?
Судя по всему нет, меня проигнорировали =(

Цитата:

мне нужно сделать спрайтом фон кнопки? т.е. я создаю кнопку, в ней на upState помещаю фон, который является наследником Sprite? и менять тогда не upState, а его ребенка, т.е. фон?
Сделайте, как сказал я и не мучайтесь.
upState — ссылка на ваш DisplayObject. Так и пихайте в него DisplayObject.

zxcv 10.06.2011 15:35

ммм... да, пардоньте, исправился, теперь контент не пустой, но все же upState просто пропадает и все.

КорДум 10.06.2011 15:36

Пишите свою кнопку. Помнится, год назад пытался сделать то же, плюнул и переписал все, накрутив наворотов.

Добавлено через 1 минуту
Хотя... попробуйте вот так:
Код AS3:

(btn.upState as DisplayObjectContainer).addChild(loader.content as DisplayObject);

Если получится, перед добавлением очищайте содержимое контейнера. Ну и, конечно же, вы сначала в upState должны поместить потомок DisplayObjectContainer, иначе вылетит RTE, что будет логичным.

zxcv 10.06.2011 15:37

Цитата:

Сообщение от КорДум
Сделайте, как сказал я и не мучайтесь.

так в том и дело, что я никак не пойму, как ((

КорДум 10.06.2011 15:39

Мы наверно опять разминулись. Я выложил пример еще один.

zxcv 10.06.2011 15:40

попробовал, но это внешне вообще никак не проявилось ) может этого ребенка на передний план как-то вынести надо?

КорДум 10.06.2011 15:40

Он и так будет на переднем плане.
Сейчас наваяю простенький пример и вам покажу.

Добавлено через 12 минут
Код AS3:

package  {
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Loader;
        import flash.display.SimpleButton;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLRequest;
 
        /**
        * @author KorDum
        */

 
        public class Main extends Sprite {
                [Embed(source = '../bin/state.gif')] private var State:Class;
                private var _loader:Loader;
                private var _button:SimpleButton;
 
                public function Main():void {
                        _loader = new Loader();
                        _loader.load(new URLRequest('1.gif'));
                        _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onCompleteHandler);
 
                        var state:Bitmap = new State() as Bitmap;
                        _button = new SimpleButton(state, state, state);
 
                        addChild(_button);
                }
 
                private function _onCompleteHandler(e:Event):void {
                        _loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, _onCompleteHandler);
                        _button.upState = _loader.content;
                }
        }
}

Простой, насколько смог.

zxcv 10.06.2011 16:24

ога, спасибо большое! в принципе, ничего нового, но работает... я кнопки создавал визуально, а тут в коде - может поэтому?

State.gif в этом примере - што-то типа заглушки? в смысле можно же заменить пустыми битмапами?

КорДум 10.06.2011 16:43

Чем угодно, хоть другими кнопками ;)
Там вот кнопочка-весы справа есть =)

zxcv 10.06.2011 16:50

гм, upState заменился успешно, по аналогии заменил downState (ждал загрузок, все дела :) ), но на щелчок мышью кнопка не реагирует


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

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