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

Lolo 20.11.2008 17:24

Как деактивировать объекты, если выбрается другой
 
Есть 3,4,5 кнопок, неважно, какое-то количество. При нажатии на кнопку допустим она меняет какие-то свои параметры, так вот чтоб при нажатии другой, она меняла свои параметры на первоначальные, а нажатая при этом меняла свои параметры.

PS извините если есть такая тема, чуток порылся не нашел. Буду признателен помощи.
PPS для кнопок создан класс, и они создаются в основном классе мувика.

Kuruki 20.11.2008 17:38

Пусть созданный вами класс для кнопок предоставляет методы setDefaultParams и setSelected к примеру. Основной класс пусть сохраняет текущую выбранную кнопку в переменной selectedButton (или эту переменную можно сделать статической переменной класса кнопки). При клике по какой-либо кнопке:
Код AS3:

selectedButton.setDefaultParams();
clickedButton.setSelected();
selectedButton = clickedButton;

Это я все в общих принципах описал...

Lolo 20.11.2008 18:51

было бы здорово есби был какой-то конкретный пример =\

Gaen 20.11.2008 19:23

Я бы сделал какой-нибудь ButtonsManager, запихал все кнопки в него и на него же возложил обязанности по слежению и установке состояния кнопок. В конце концов всё равно скорее всего их придётся пихать в один мувиклип.

А кнопки (которые и не кнопки на самом деле, а мувиклипы, ибо должны ещё уметь принимать разные состояния) просто посылают событие при клике и обладают методами типа activate/deactivate.

При клике по кнопке ButtonsManager ловит от неё MouseEvent.CLICK, вызывает у неё activate(), для предыдущей активной кнопки, ссылка на которую сохранена в приватной переменной, вызывает deactivate() и обновляет ссылку.

Может ещё послать наверх событие что мол сменилась активная кнопка.

Lolo 20.11.2008 20:07

я запарился короче, сижу второй день над вопросом, как запихать в переменную именно тот объект который я тока что тыкнул?

Добавлено через 4 минуты
а точнее этот урод (Adobe Flash CS3 Professional) матерится постоянно на event.currentTarget типа говорит какая-то хреновая переменная. я уже так устал, простите за грубость, меня уже трясет от этой сраной проблемы, абсолютно элементарно, но я не могу дойти..

AL.exe 20.11.2008 20:55

Строчку, на которой ругается (с контекстом) и текст ошибки приведите, пожалуйста.

Lolo 20.11.2008 21:39

все, спасибо всем, проблема решена...
function checkMenu(Event:MouseEvent) - в этой строчке писал большую "Е" вместо малой) вот и все

пришлось переписывать код, чтоб заметить эту неточность. завтра выложу коды решения в 2х вариантах, тупой и короткий

s8000_1 20.11.2008 21:49

Вложений: 1
Может кому пригодится :)

Lolo 21.11.2008 17:45

Вот итоговый код моего меню. кому интересно. я думаю мож кто-нить даже сможет использовать его в своих целях.

Код AS3:

package {
        import ButtonOuterBR;
        import ButtonOuterBL;
        import ButtonOuterTL;
        import ButtonOuterTR;
        import ButtonCN;
        import Buttons;
        import fl.transitions.Tween;
        import fl.transitions.easing.*;
        import fl.transitions.TweenEvent;
        import flash.display.MovieClip;
        import flash.geom.*;
        import flash.events.*;
 
 
        public class Main extends MovieClip {
 
                private var _xPos = 160;
                private var _yPos = 160;
                private var setType:String;
                private var _buttonBR:ButtonOuterBR;
                private var _buttonBL:ButtonOuterBL;
                private var _buttonTL:ButtonOuterTL;
                private var _buttonTR:ButtonOuterTR;
                private var _buttonCN:ButtonCN;
                private var _currentMenu:Object;
 
                public function Main() {
                        createMenus();
                }
                private function createMenus():void {
                        _currentMenu = null;
 
                        //Creating and Properties of Bottom Right Button
                        _buttonBR = new ButtonOuterBR();
                        addChild(_buttonBR);
                        //buttonBR.setType("News");
                        _buttonBR.addEventListener(MouseEvent.CLICK, Active);
                        var colorBR:ColorTransform = new ColorTransform();
                        colorBR.blueOffset = 150;
                        _buttonBR.x = _xPos;
                        _buttonBR.y = _yPos;
                        _buttonBR.transform.colorTransform = colorBR;
 
                        //Creating and Properties of Bottom Left Button
                        _buttonBL = new ButtonOuterBL();
                        addChild(_buttonBL);
                        //buttonBL.setType("Contact");
                        _buttonBL.addEventListener(MouseEvent.CLICK, Active);
                        var colorBL:ColorTransform = new ColorTransform();
                        colorBL.redOffset = 150;
                        _buttonBL.x = _xPos;
                        _buttonBL.y = _yPos;
                        _buttonBL.transform.colorTransform = colorBL;
 
                        //Creating and Properties of Top Left Button
                        _buttonTL = new ButtonOuterTL();
                        addChild(_buttonTL);
                        //buttonTL.setType("Works");
                        _buttonTL.addEventListener(MouseEvent.CLICK, Active);
                        var colorTL:ColorTransform = new ColorTransform();
                        colorTL.greenOffset = 150;
                        _buttonTL.x = _xPos;
                        _buttonTL.y = _yPos;
                        _buttonTL.transform.colorTransform = colorTL;
 
 
                        //Creating and Properties of Top Right Button
                        _buttonTR = new ButtonOuterTR();
                        addChild(_buttonTR);
                        //buttonTR.setType("Photos");
                        _buttonTR.addEventListener(MouseEvent.CLICK, Active);
                        var colorTR:ColorTransform = new ColorTransform();
                        colorTR.greenOffset = 100;
                        colorTR.blueOffset = 100;
                        _buttonTR.x = _xPos;
                        _buttonTR.y = _yPos;
                        _buttonTR.transform.colorTransform = colorTR;
 
                        //Creating and Properties of Central Button
                        _buttonCN = new ButtonCN();
                        addChild(_buttonCN);
                        //buttonCN.setType("About");
                        _buttonCN.addEventListener(MouseEvent.CLICK, Active);
                        var colorCN:ColorTransform = new ColorTransform();
                        colorCN.greenOffset = 190;
                        colorCN.redOffset = 190;
                        _buttonCN.x = _xPos;
                        _buttonCN.y = _yPos;
                        _buttonCN.transform.colorTransform = colorCN;
                }
 
                public function Active(event:MouseEvent):void {
                        if (_currentMenu == null) {
                                _currentMenu = event.currentTarget;
                                _currentMenu.activeIt();
                                _currentMenu.removeEventListener(MouseEvent.CLICK, Active);
                        } else {
                                _currentMenu.addEventListener(MouseEvent.CLICK, Active);
                                _currentMenu.deactiveIt();
                                event.currentTarget.removeEventListener(MouseEvent.CLICK, Active);
                                event.currentTarget.activeIt();
                                _currentMenu = event.currentTarget;
                        }
                }
        }
}

Ну как понимаете Buttons - это класс описывающий кнопку и что она будет делать, функции activeIt(); и deactiveIt(); это функции при которых она становится активной и неактивной соответсвенно.


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

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