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

freeek 11.03.2009 13:34

функция для группы объектов
 
я недавно начал изучать AS3 и решил практики ради создать совсем простой код. на сцене есть кнопка, по её нажатию создаются круги. при нажатии на любой из кругов он становится переносимым (starDrag). eventListener я добавил без определяющего объекта. проблема в том что я не знаю как сделать чтоб сама кнопка на starDrag не реагировала.

Код AS3:

button.addEventListener(MouseEvent.CLICK, addRand);
addEventListener(MouseEvent.MOUSE_DOWN, dragDot);
addEventListener(MouseEvent.MOUSE_UP, stopdragDot);
 
function addRand(event:MouseEvent):void
{
        var mc:MovieClip = new MovieClip();
        mc.graphics.beginFill(0x444077);
        mc.graphics.drawCircle(0,0,10);
        mc.x = Math.random()*500+25;
        mc.y = Math.random()*350+25;
        addChild(mc);
}
function dragDot(event:MouseEvent):void
{
        event.target.startDrag();
}
function stopdragDot(event:MouseEvent):void
{
        event.target.stopDrag();
}


r4v3r 11.03.2009 19:23

Попробуй так
Код AS3:

button.addEventListener(MouseEvent.CLICK, addRand);
 
 
function addRand(event:MouseEvent):void
{
        var mc:MovieClip = new MovieClip();
        mc.graphics.beginFill(0x444077);
        mc.graphics.drawCircle(0,0,10);
        mc.x = Math.random()*500+25;
        mc.y = Math.random()*350+25;
        addChild(mc);
        mc.addEventListener(MouseEvent.MOUSE_DOWN, dragDot);
        mc.addEventListener(MouseEvent.MOUSE_UP, stopdragDot);
}
function dragDot(event:MouseEvent):void
{
        event.target.startDrag();
}
function stopdragDot(event:MouseEvent):void
{
        event.target.stopDrag();
}

а вообще если клип не будет содержать анимацию лучше создавать его как Sprite

freeek 11.03.2009 20:30

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

ramshteks 11.03.2009 20:59

Цитата:

Сообщение от freeek (Сообщение 804727)
работает отлично. ошибку свою понял. буду признателен если расскажете о преимуществах спрайтов, ну или ссылку скинете

А все зависит от функционла который вам необходим, у разных классов свои методы. ну естественно у визуальных они наследуются от родительского, так например у мувиклипа есть все метод спрайта.

А вообще ваш код нужно было делать поиному. Так как АС3 у нас ооп язык, то исходя из основ ооп, нужно сдедать вывод что каждый класс отвечает только за свой функционал. Отсюда следует что все ивенты для перетаскивания должн быть в классе написанном для вашего кружочка.

r4v3r 11.03.2009 21:53

Цитата:

Shape — класс Shape применяется для создания векторной графики (например, прямоугольников, линий,
кругов и т.д.)
Sprite — объект Sprite может содержать собственную графику, а также дочерние экранные объекты.
MovieClip — объект MovieClip представляет собой символ фрагмента ролика, предназначенный для
ActionScript и созданный в инструменте разработки Flash. На практике объект MovieClip аналогичен
объекту Sprite, за исключением того, что в нем также присутствует временная шкала.
Зайди на http://flasher.ru/forum/announcement.php?f=83&a=30, там есть полезные ссылки на справочные руководства на русском


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

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