Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Звездное небо (http://www.flasher.ru/forum/showthread.php?t=146509)

lalala2 10.11.2010 02:38

Звездное небо
 
Есть у меня звездное небо, которое можно просматривать либо целиком, либо увеличив одну какую-то звезду. Все звезды — это один ролик mc. Нажимаем на звезду, и:
1)ролик mc увеличивается
2)ролик mc сдвигается так, чтобы звезда была в центре экрана (через localToGlobal)

[IMG]http://i11.***********/thumb/2010/1110/fb/2f9459ece8cb23cd4cfbb137ded5fafb.jpeg[/IMG]


Проблема в том, что звезда не доезжает до центра экрана. Из-за увеличения ролика mc, звезды внутри него меняют свои координаты.
Тут каким-то образом надо посчитать коэффициент смещения звездочек, и учесть его при увеличении, а вот как это сделать ума не приложу :wacko:

Добавлено через 17 часов 23 минуты
Есть идеи?

sestem 11.11.2010 20:48

Ну если ты хочешь чтобы она приползла туда по нажатию по ней 1 раз, on(Press){};
Ну типо и так далее =)
Например
//Я неуверен потомучто невнимательно читал =)
Код AS1/AS2:

if(on(Press('Кнопа')){mc1._x=20
mc1._y=-20}

Я точно не прав =)

аа коефециент =), тогда вручную хД =) ну я б так поступил, в ручную мерял

lalala2 11.11.2010 20:58

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

Цитата:

Проблема в том, что звезда не доезжает до центра экрана. Из-за увеличения ролика mc, звезды внутри него меняют свои координаты.
Забыл добавить, что localToGlobal берется один раз — до того, как небо начинает увеличиваться.

lalala2 11.11.2010 21:15

Вложений: 1
Причем, при повороте то же самое — промахивается мимо центра. Как сделать чтобы localToGlobal брался с учетом, например, поворота? Это вообще реально, или для этого есть какие-то "костыли"?

Код AS1/AS2:

import com.greensock.*;
import com.greensock.easing.*;
 
 
i = 0;
 
onMouseDown = function () {
        if (i > 6) i = 0;
 
        pointObj = {x:map["star" + i]._x, y:map["star" + i]._y};
        map.localToGlobal(pointObj);
        mapX = centre._x - (pointObj.x - map._x);
        mapY = centre._y - (pointObj.y - map._y);
 
        Math.floor(1 + Math.random() * 2) == 1 ? r = -(random(360)) : r = random(360);
        new TweenLite(map, 2, {_x:mapX, _y:mapY, _rotation:r});
 
        i++;
};


sestem 11.11.2010 22:01

Спасибо, про localToGlobal не знал =), а как думаете кординаты изменяться если поставить туда клип как сцену и увеличивать клип, или внутри него


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

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