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

GoodWin74 02.05.2010 12:46

Маска и перемещение Спрайта под маской
 
Написал код, где создается спрайт который под маской прямоугольника в нем естественно будут какието объекты и тп. На сцене уже созданы три объекта Кнопка вверх кнопка вниз и маска в виде клипа белого прямоугольника. Спрайт создается кодом.

myMask(маска), up_btn(Кнопка вверх), down_btn(Кнопка вниз)

Сам код:
Код AS3:

var Sprite:Sprite = new Sprite();
addChild(Sprite);
Sprite.mask = myMask;
Sprite.x = 10;
Sprite.y = 10;
up_btn.addEventListener(MouseEvent.CLICK, function(e:Event){Sprite.y -= 10});
down_btn.addEventListener(MouseEvent.CLICK, function(e:Event){Sprite.y += 10});

Но при нажатии не чего не происходит :( Подскажите как перемещать объект под маской...

cv' 02.05.2010 14:17

Мне кажется, проблема либо в назывании объекта именем "Sprite", либо в анонимной функции.

Вот так все работает.
Код AS3:

var st:Sprite = new Sprite();
var msk:Sprite = new Sprite();
var mskS:Sprite = new Sprite();
var up:Sprite = new Sprite();
var down:Sprite = new Sprite();
addChild(st)
addChild(msk)
addChild(mskS)
addChild(up)
addChild(down)
with (st)
{
        graphics.beginFill(0x000000);
        graphics.drawRect(0,0,10,10);
        graphics.endFill();
        x = 15;
        y = 15;
        mask = msk;
}
with (msk)
{
        graphics.beginFill(0x000000);
        graphics.drawRect(0,0,20,20);
        graphics.endFill();
        x = 10
        y = 10
}
with (mskS)
{
        graphics.lineStyle(2,0x000000)
        graphics.beginFill(0x000000,0);
        graphics.drawRect(0,0,20,20);
        graphics.endFill();
        x = 10
        y = 10
}
with (up)
{
        graphics.beginFill(0x00FFFF);
        graphics.drawRect(0,0,10,10);
        graphics.endFill();
        addEventListener(MouseEvent.CLICK,moveSprite);
        buttonMode = true
        x = 50;
}
with (down)
{
        graphics.beginFill(0x00FFFF);
        graphics.drawRect(0,0,10,10);
        graphics.endFill();
        addEventListener(MouseEvent.CLICK,moveSprite);
        buttonMode = true
        x = 50;
        y = 15;
}
function moveSprite(evt:MouseEvent)
{
        if(evt.currentTarget == up)
        {
                st.y -= 1
        } else {
                st.y += 1
        }
}


mikhailk 02.05.2010 14:55

Кстати, во флеше это момент принципиальный.
Если пишешь имя переменной и IDE подсвечивает ее как синтаксис AS3, надо переименовывать не раздумывая.

GoodWin74 02.05.2010 23:36

да это чисто пример имена другие отличные от Типов...


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

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