Форум 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)
-   -   мувик, пересекающий границы Stage (http://www.flasher.ru/forum/showthread.php?t=90167)

Что такое хорошо? 03.01.2007 20:41

мувик, пересекающий границы Stage
 
остановку мувика по пересечению со Stage сверху и слева вроде сделал, а справа и снизу все равно инерционно едет (((
Подскажите, как в моем случае отловить этот момент.
Вот код и ФЛА в прицепе.

Код:

function posing(obj, speed) {
        speedX = Math.round(obj._width/2-_xmouse)-Math.round(obj._x+obj._width/2);
        speedY = Math.round(obj._height/2-_ymouse)-Math.round(obj._y+obj._height/2);
        obj._x = obj._x+speedX/speed;
        obj._y = obj._y+speedY/speed;
}

my_mc.onEnterFrame = function() {
        posing(this, 10);
};

Stage.align = "LT";
Stage.scaleMode = "noScale";


iNils 03.01.2007 20:53

А комментарии слабо написать? Или вы предлагаете нам окунуться в удивительное расследование по стопам ваших мыслей и желаний?

wvxvw 04.01.2007 00:58

Ээээ... а что должно происходить? и зачем нужна reposition(), нельзя что ли сразу мувик в нужные координаты поставить? Он же все равно на сцене лежит...

Если я думаю в нужном направлении, и нужно узнать, когда, например, нижний край клипа достигнет нижней границы Stage, то это произойдет, когда выполнится условие:
Код:

my_mc._y+my_mc._height<=Stage.height

Что такое хорошо? 04.01.2007 14:21

Цитата:

Сообщение от wvxvw
Ээээ... а что должно происходить?......

Хочу добиться, чтобы при достижении границ Stage, мой мувик my_mc останавливался, но при этом отслеживание координат мыши и пр. оставалось. Поэтому удалять onEnterFrame я спешить не стал. :moder:
А как сделать правильно, честно говоря, не знаю. Вот и спрашиваю.
Другими словами - my_mc не должен влазить за границы Stage.

Цитата:

Сообщение от wvxvw
зачем нужна reposition()...

на разное разрешение мониторов, для разных размеров Stage. Но это не суть.

bbexp 04.01.2007 15:58

Проблема в том, что определена неверная зона для перемещщения клипа.
Ты отталкиваешся от координат мыши и чего то там суетишься делишь пополам.

Классическая пропорция.
Вычитаем из ширины клипа ширину сцены - это реальный трек для клипа по иксу. Та же история по игреку.

А потом лови себе мышь и по пропорции считаешь реальное перемещение.

Код:

Stage.scaleMode = "noScale";
Stage.align = "LT";

var _xrect:Number = null;
var _yrect:Number = null;

function reposition() {
        my_mc._x = (Stage.width/2)-(my_mc._width/2);
        my_mc._y = (Stage.height/2)-(my_mc._height/2);
        panel._x = Stage.width-240;
        panel._y = Stage.height-40;
        niz._y = Stage.height-100;
       
        _xrect = (my_mc._width-Stage.width);
        _yrect = (my_mc._height-Stage.height);
    // определяем РЕАЛЬНЫЙ ТРЕК для клипа. Ибо он равен сам видишь чему.
       
       
       

}
//
function posing(obj, speed) {
        var xpos:Number = -1*(_xmouse*_xrect/Stage.width);
        var ypos:Number = -1*(_ymouse*_yrect/Stage.height);
        var speedX:Number = xpos-obj._x;
        var speedY:Number = ypos-obj._y;
        obj._x += speedX/speed;
        obj._y += speedY/speed;
       
        with (panel) {
                test_txt_0.text = "St.width="+Stage.width+"";
                test_txt_1.text = "obj._x="+obj._x+"";
                test_txt_2.text = "speedX="+speedX+"";
                test_txt_3.text = "speedY="+speedY+"";
                test_txt_4.text = "";
        }
}

my_mc.onEnterFrame = function() {
        posing(this, 10);
};

myListener = new Object();
myListener.onResize = function() {
        reposition();
};

Stage.addListener(myListener);
reposition();


bbexp 04.01.2007 16:05

ДА, и кстати - репозитинг надо переписать - он от каких то левых цифр пляшет.
В принципе код все поставит на место, но иногда случается такое, что фон проскакивает при перемещении границы окна

_____
PS. никогда не поверю, что ЭТОТ код требует каких то комментариев. Было кривовато конечно, но все понятно и без них.

Что такое хорошо? 04.01.2007 18:05

ОК спасибо, мой старый (насколько я могу еще узнать тебя) друг! )))
Я сперва сделал (а местами и подсмотрел) код перемещения мy_mc, а потом думал отлавливать моменты его пеесечения со Stage. Но понял, что видно не то я себе удумал))) И решил спросить тут...
А репозитинг сейчас переСМОТРЮ .
При случае отпишу в личку ))
Спасибо!


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

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