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

КГБ 01.04.2010 14:57

колличество выполнеия
 
Доброго времени суток, уважаемые форумчане !
Прошу Вашего совета.
Как сделать чтоб при выборе this, круг действий происходил 1 раз, только над этим обектом ( увеличил, повернул ---> вернул обратно), а остальные будут оставатся незадействованны ?
Т.е. на сцене, есть Мувики, к ним применяем этот класс, кликнул --> увеличил ---> кликнул еще, но на другой мувик, этот вернулся в прежнее состояние... Как то так !
з.ы. Просьба ногами сильно непинать, совсем совсем начинающий писака кода :away:

Код AS3:

package action_cs
{
        import flash.display.*;
        import flash.events.*;
        import fl.transitions.*;
        import fl.transitions.easing.*;
 
        public class test extends MovieClip
        {
                private var scaleMapX:Tween;
                private var rotateMap:Tween;
                private var scaleMapY:Tween;
                private var scaleNoneMapX:Tween;
                private var scaleNoneMapY:Tween;
                private var rotateN:Tween;
                public function test()
                {
                        this.addEventListener(MouseEvent.CLICK, onClick);
                }
                private function onClick(event:MouseEvent):void
                {
                        var topPosition:uint = this.parent.numChildren - 1;
                        this.parent.setChildIndex(this,  topPosition);
                        scaleMapX = new Tween(this,"scaleX",Regular.easeOut,this.scaleX,1.5,20,false);
                        scaleMapY = new Tween(this,"scaleY",Regular.easeOut,this.scaleY,1.5,20,false);
                        rotateMap = new Tween(this,"rotation",Regular.easeOut,this.rotation,50,20,false);
                        this.addEventListener(MouseEvent.CLICK, onOut);
                        this.removeEventListener(MouseEvent.CLICK, onClick);
                }
                private function onOut(e:MouseEvent):void
                {
                        this.parent.setChildIndex(this, this.numChildren);
                        if (this.scaleX == scaleMapX.finish)
                        {
                                scaleNoneMapX = new Tween(this,"scaleX",Regular.easeOut,this.scaleX,1,20,false);
                                scaleNoneMapY = new Tween(this,"scaleY",Regular.easeOut,this.scaleY,1,20,false);
                                rotateN = new Tween(this,"rotation",Regular.easeOut,this.rotation,0,20,false);
                                this.removeEventListener(MouseEvent.CLICK, onOut);
                                this.addEventListener(MouseEvent.CLICK, onClick);
                        }
                }
        }
}


dmitriev 01.04.2010 15:37

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

КГБ 01.04.2010 20:28

Спасибо, но как главное это реализавть ?
немного примера для понимания, если незатруднит.

Rzer 01.04.2010 22:03

Код AS3:

public static const REMEMBER_ME:String = "event:rememberme"
...
private function onClick(e:MouseEvent):void{
  dispatchEvent(new Event(REMEMBER_ME));
}

А в родителе-контейнере, что то такое:
Код AS3:

instanceOfTest.addEventListener(test.REMEMBER_ME, onChangeTarget);
...
 
private var lastUsed:test;
 
private function onChangeTarget(e:Event):void{
 
  if (lastUsed){
      lastUsed.hide();
  }
 
  lastUsed= e.target as test;
  lastUsed.show();
}

Давать имена классов принято с большой буквы, чем раньше Вы это научитесь делать, тем раньше придёт к Вам счастье)

КГБ 01.04.2010 23:03

совет про большие буквы принял...
А вот с Вашим примером тяжеловато, чувствую сильный провал в знаниях ))

Добавлено через 15 часов 12 минут
при использовании класса, Невыходит каменный цветок !
А в таком виде на таймлайне работает ...
Код AS3:

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import fl.transitions.Rotate;
stop();
lic_img_mc.buttonMode = true;
lic3_img_mc.buttonMode = true;
lic1_img_mc.buttonMode = true;
lic2_img_mc.buttonMode = true;
 
lic_img_mc.addEventListener(MouseEvent.CLICK, onClick);
lic2_img_mc.addEventListener(MouseEvent.CLICK, onClick);
lic3_img_mc.addEventListener(MouseEvent.CLICK, onClick);
lic1_img_mc.addEventListener(MouseEvent.CLICK, onClick);
 
var Img = MovieClip;
function onClick(e:MouseEvent):void
{
        Img = e.currentTarget;
        addChild(Img);
        var scaleMapX:Tween = new Tween(Img,"scaleX",Regular.easeOut,Img.scaleX,1,20,false);
        var scaleMapY:Tween = new Tween(Img,"scaleY",Regular.easeOut,Img.scaleY,1,20,false);
        var rotate:Tween = new Tween(Img,"rotation",Regular.easeOut,Img.rotation,0,20,false);
        scaleMapX.addEventListener(TweenEvent.MOTION_FINISH,scaleFin);
        scaleMapY.addEventListener(TweenEvent.MOTION_FINISH,scaleFin);
        rotate.addEventListener(TweenEvent.MOTION_FINISH,scaleFin);
        var my_sound:Sound = new Sound(new URLRequest("imaige/click1.mp3"));
        my_sound.play();
 
}
function scaleFin(e:TweenEvent):void
{
        lic_img_mc.removeEventListener(MouseEvent.CLICK, onClick);
        lic2_img_mc.removeEventListener(MouseEvent.CLICK, onClick);
        lic3_img_mc.removeEventListener(MouseEvent.CLICK, onClick);
        lic1_img_mc.removeEventListener(MouseEvent.CLICK, onClick);
 
        lic_img_mc.addEventListener(MouseEvent.CLICK, onOut);
        lic2_img_mc.addEventListener(MouseEvent.CLICK, onOut);
        lic3_img_mc.addEventListener(MouseEvent.CLICK, onOut);
        lic1_img_mc.addEventListener(MouseEvent.CLICK, onOut);
}
 
function onOut(e:MouseEvent):void
{
        var my_sound:Sound = new Sound(new URLRequest("imaige/click.mp3"));
        my_sound.play();
        var scaleNoneMapX:Tween = new Tween(Img,"scaleX",Regular.easeOut,Img.scaleX,.32,20,false);
        var scaleNoneMapY:Tween = new Tween(Img,"scaleY",Regular.easeOut,Img.scaleY,.32,20,false);
        var rotateN:Tween = new Tween(Img,"rotation",Regular.easeOut,Img.rotation,-21,20,false);
        scaleNoneMapX.addEventListener(TweenEvent.MOTION_FINISH,scaleFin1);
        scaleNoneMapY.addEventListener(TweenEvent.MOTION_FINISH,scaleFin1);
        rotateN.addEventListener(TweenEvent.MOTION_FINISH,scaleFin1);
}
function scaleFin1(e:TweenEvent):void
{
        lic_img_mc.removeEventListener(MouseEvent.CLICK, onOut);
        lic2_img_mc.removeEventListener(MouseEvent.CLICK, onOut);
        lic3_img_mc.removeEventListener(MouseEvent.CLICK, onOut);
        lic1_img_mc.removeEventListener(MouseEvent.CLICK, onOut);
 
        lic_img_mc.addEventListener(MouseEvent.CLICK, onClick);
        lic2_img_mc.addEventListener(MouseEvent.CLICK, onClick);
        lic3_img_mc.addEventListener(MouseEvent.CLICK, onClick);
        lic1_img_mc.addEventListener(MouseEvent.CLICK, onClick);
}


КГБ 06.04.2010 17:55

Помогите добить код, у самого неплучается :(

Psycho Tiger 06.04.2010 19:43

Откуда нам знать, что именно у вас за "каменный цветок"?

КГБ 06.04.2010 20:11

Вложений: 1
Как сделать, чтоб при выборе "this" в *.as, действие происходило 1 раз, только над обектом с которогр начал событие ( увеличил, повернул ---> вернул обратно), а остальные будут оставатся незадействованны ?
Т.е. на сцене, есть Мувики, к ним применяем этот класс, кликнул --> увеличил ---> кликнул еще, но на другой мувик, Увеличенный вернулся в прежнее состояние... Как то так !

Вложение 24137

derhab 07.04.2010 04:19

Вложений: 1
например так

КГБ 07.04.2010 11:30

Спасибо, добрый человек !!!

Добавлено через 25 минут
...и чтоб клик по уже увеличенному обекту так же возвращал его на место.


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

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