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

rockerror 21.09.2009 01:20

Еще про движение мувика
 
Уважаемые Дамы и Господа!
Еще один вопрос от новичка. Суть следующая:
На сцене лежит полупрозрачный мувик, который всем своим видом говорит нам, что он как бы дым. Назовем его smoke. Ширина сцены 1024, высота, соответственно 768. Задача: если курсор мыши переходит в левую часть экрана, то smoke должен сдвинуться вправо, если курсор уходит в правую часть экрана, соответственно, smoke уходит влево. то же про вверх и вниз...

Как придумал решить:

Код AS1/AS2:

var x1:Number = 250;
var x2:Number = 774;
var y1:Number = 150;
var y2:Number = 618;
var xc = _xmouse;
var yc = _ymouse;
if (xc<x1) {
        _root.smoke._x == -924;
};
if (xc>x2) {
        _root.smoke._x == -1124;
};

Ничего не происходит... И, кстати, хотелось бы сделать движение плавным... Где ошибка и как придать плавности? Подскажите плиз!!!

mooncar 21.09.2009 01:57

Главная ошибка в том, что у вас проверка условий не выполняется.
Вернее, выполняется один раз, при начальном исполнении кода.
А вам нужно ее выполнять непрерывно.
onEnterFrame или setInterval вам в помощь.
И приравнивание значения пишите через "=",
== - это сравнение.

Добавлено через 3 минуты
И почему у "x" такие дикие отрицательные значения? На _root это где-то далеко слева за областью сцены.
Возможно, вы имели ввиду:
Код AS1/AS2:

_root.smoke._x -= 924;


rockerror 21.09.2009 02:11

Благодарю!!! Хммм...
Теперь код выглядит:
Код AS1/AS2:

var x1:Number = 250;
var x2:Number = 774;
var y1:Number = 150;
var y2:Number = 618;
var xc = _xmouse;
var yc = _ymouse;
onEnterFrame = function(){
if (xc<x1) {
        _root.bg_2._x = -924;
};
if (xc>x2) {
        _root.bg_2._x = -1124;
};
};

Что касается "диких отрицательных значений" - все верно, просто smoke значительно больше размера сцены)))

Добавлено через 33 секунды
Все равно не работает(((

Добавлено через 2 минуты
Хммм... для меня бы могла стать решением проблемы возможность инвертировать движение мувика при использовании функции .startDrag()... Это возможно?

mooncar 21.09.2009 02:19

А при чем тут startDrag?
У вас опять беда - вы всего один раз проверяете значение мышкиных координат.
Попробуйте так:
Код AS1/AS2:

var x1:Number = 250;
var x2:Number = 774;
var y1:Number = 150;
var y2:Number = 618;
 
this.onEnterFrame = function(){
 if (_root._xmouse < x1) {
        _root.bg_2._x = -924;
 }
 if (_root._xmouse > x2) {
        _root.bg_2._x = -1124;
  }
};

PS. Почему вы так ужасно оформляете код с точки зрения синтаксиса AS?
Зачем точка с запятой в конце тела операций if? Откуда это?

rockerror 21.09.2009 02:21

Недавно я в as в общем...)) И вообще я дизайнер)))))

Добавлено через 3 минуты
Спасибо огромное!!! Заработало вродь))) Позвольте еще вопрос, как сделать перемещение мувика в новые координаты плавным?

mooncar 21.09.2009 02:25

Оно понятно, я тоже не флешер, но учебники-то и примеры по AS более или менее у нас одинаковые ведь были в массе? :)

rockerror 21.09.2009 02:26

=))) Хых)) У меня только справочник имеется))) Но очень хороший ;)

mooncar 21.09.2009 02:31

Настолько хороший, что в нем указывается, что в конце блока выражений {} нужно ставить точку с запятой? Не верьте ему.
Точка с запятой ставится в конце одного выражения:
Код AS1/AS2:

var x:Number = 7;
this.onEnterFrame = function() { ...... } ;

Тут не ставится:
Код AS1/AS2:

function myFunction() {
....
}
 
if (условие) {
...
}
else {
...
}


rockerror 21.09.2009 02:34

Позвольте еще вопрос, как сделать перемещение мувика в новые координаты плавным?

mooncar 21.09.2009 02:36

Цитата:

Сообщение от rockerror (Сообщение 852314)
как сделать перемещение мувика в новые координаты плавным?

Сделайте не единичную установку новых координат
Код AS1/AS2:

_root.bg_2._x = -924;

а приращение:
Код AS1/AS2:

_root.bg_2._x -= 10;

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


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

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