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

Mueller 15.03.2008 22:41

как ограничить движение по оси Х ?
 
У меня есть мувиКлип - шарик.
Этот шарик движется по оси Х вправо/влево в зависимости от положения мышки (это я уже сделала).
А как мне ограничить это движение? Я не хочу, чтобы его мотало по всему экрану, я хочу, что бы ДОПУСТИМ он отклонялся на 3 см туда, на 4 сюда .... Мне видимо надо дописать какое то условие в IF?

Плиз, не отправляйте меня в вакансии. Я хочу не просто иметь, я хочу ПОНЯТЬ. :rolleyes:

greenya 16.03.2008 01:22

Код:

var minX:Number = 200;
var maxX:Number = 400;
var accX:Number = 1;

-----

if (_x > maxX) accX = -1;
if (_x < minX) accX = 1;
_x += accX;


udaaff 16.03.2008 03:38

Если startDrag'ом двигаете, то можно задать ограничивающий прямоугольник.
startDrag([lockCenter:Boolean], [left:Number], [top:Number], [right:Number], [bottom:Number])

Mueller 16.03.2008 13:48

Нет, не stratDrag. Как я понимаю, там больше программирования, что мне пока не осилить. Хотя, оччччень полезно уметь как и ограничивающий прямоугольник задавать, так и координаты ...
Код у меня вот такой
Код:

onClipEvent (enterFrame) {
  mx = _root._xmouse;
  if (mx<_x) {
    dx = _x-mx;
  } else {
    dx = mx-_x;
  }
  moveSpeedx = dx/100;
  if (mx<_x) {
    _x = _x-moveSpeedx;
  } else {
    _x = _x+moveSpeedx;
  }

Сижу, думаю, как сюда вставить код greenya. Читаю Хелп и фирменное руководство.

Спасибо вам обоим!

greenya 16.03.2008 15:24

Вложений: 1
Прицепил рабочий пример с моим алгоритмом.
Разбирайтесь.

Mueller 16.03.2008 16:08

Спасибо !!! не ожидала ! Правда здесь нет зависимости от мышки, но думаю, разобраться можно ... Спасибо !!!

Mueller 18.03.2008 12:24

И все же мне нужна ваша помощь!
Не получается у меня ... Мой шарик совсем встал. Проверьте, пожалуйста, код. В чем ошибка?

Код:

onClipEvent (enterFrame) {

\\ задаю ограничивающие координаты по Х. (ТАК можно делать?)
  max_x = 1000;
  min_x = 500;

    mx = _root._xmouse;

\\ ну а дальше сами условия пошли ...

  if (mx<min_x)
    mx=min_x;
  if (mx>max_x)
    mx=max_x;

  if (mx<_x) {
    dx = _x-mx;
  } else {
    dx = mx-_x;
  }
  moveSpeedx = dx/100;
  if (mx<_x) {
    _x = _x-moveSpeedx;
  } else {
    _x = _x+moveSpeedx;
  }


WindWalker 18.03.2008 12:30

Код:

if (mx<min_x)
    mx=min_x;
  if (mx>max_x)
    mx=max_x;

  if (mx<_x) {
    dx = _x-mx;
  } else {
    dx = mx-_x;
  }
  moveSpeedx = dx/100;
  if (mx<_x) {
    _x = _x-moveSpeedx;
  } else {
    _x = _x+moveSpeedx;
  }

Это шо за ересь? Новая фобия - боязнь отрицательных чисел?

Всё это пишется в одну строчку:
Код:

_x+=(mx-_x)/100;

Mueller 18.03.2008 12:52

Цитата:

Сообщение от WindWalker
Это шо за ересь? Новая фобия - боязнь отрицательных чисел?

Это попытки что то оживить ... неужели было все ТАК плохо? :rolleyes:
Теперь буду знать, что можно все значительно сократить : )

А моя надежда на помощь так и зависла ... как же ограничить движение и оставить зависимость?
Ну не подключать же девичье слезы : ))

WindWalker 18.03.2008 13:04

Код:

onClipEvent (enterFrame) {
  max_x = 1000;
  min_x = 500;

  mx = _root._xmouse;

  _x+=(mx-_x)/100;

  if (_x<min_x)
    _x=min_x;
  if (_x>max_x)
    _x=max_x;
}



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

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