Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.12.2009, 07:12
vladislove вне форума Посмотреть профиль Отправить личное сообщение для vladislove Найти все сообщения от vladislove
  № 1  
Ответить с цитированием
vladislove

Регистрация: Jul 2008
Сообщений: 31
По умолчанию Как остановить движение

Есть движущийся мувик и в него вложен другой мувик
Не получается остановить основной при условии что координата Х вложенного превысит определенное значение

Трэйс координаты Х основного ролика показывает изменение значения Х а вот у вложенного координата не меняется

Подскажите плз где ошибка

Код AS1/AS2:
this.onEnterFrame = function(){
	if(this.main_mc.hitL_mc._x >= 235){
		this.main_mc._x = 235;
	}
	else{
		this.main_mc._x +=3;
	}
 
	trace(this.main_mc.hitL_mc._x);
 
	trace(this.main_mc._x);
 
}

Старый 30.12.2009, 08:11
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Ну так вы вложенный и не передвигаете. А координаты относительны. Можете использовать метод MovieClip#localToGlobal() для определения глобального положения детенка.

Старый 31.12.2009, 16:17
vladislove вне форума Посмотреть профиль Отправить личное сообщение для vladislove Найти все сообщения от vladislove
  № 3  
Ответить с цитированием
vladislove

Регистрация: Jul 2008
Сообщений: 31
ну вообщето детенок тоже двигается вместе с родителем.хотя конечно относительно родителя он неподвижен
пробовал разобраться с localToGlobal() но пока не получилось с этим разобраться
если бы пример как перевести локальные координаты в глобальные

Старый 31.12.2009, 16:35
swat05 вне форума Посмотреть профиль Отправить личное сообщение для swat05 Найти все сообщения от swat05
  № 4  
Ответить с цитированием
swat05
 
Аватар для swat05

Регистрация: Jun 2008
Адрес: Беларусь, Минск
Сообщений: 133
Отправить сообщение для swat05 с помощью ICQ
т.к. вы не двигаете вложенный клип, то логично что изменяются координаты главного - значит простейший способ:
Код AS1/AS2:
this.onEnterFrame = function(){
	if(this.main_mc._x >= 235){
		this.main_mc._x = 235;
	}
	else{
		this.main_mc._x +=3;
	}
 
	trace(this.main_mc.hitL_mc._x);
 
	trace(this.main_mc._x);
 
}

Старый 04.01.2010, 18:49
vladislove вне форума Посмотреть профиль Отправить личное сообщение для vladislove Найти все сообщения от vladislove
  № 5  
Ответить с цитированием
vladislove

Регистрация: Jul 2008
Сообщений: 31
ну так это не работает
уважаемый swat05 я не понял что вы хотели сказать своим постом
Задача в том чтоб что вложенный клип как бы является ограничителем движения основного и когда его координаты принимают определенное значение то основной клип останавливается,для чего здесь выше и был предложен метод localToGlobal()
но как им правильно воспользоваться применительно к моей ситуации я не могу пока разобраться

Старый 05.01.2010, 03:08
fessor вне форума Посмотреть профиль Отправить личное сообщение для fessor Найти все сообщения от fessor
  № 6  
Ответить с цитированием
fessor

Регистрация: Oct 2009
Сообщений: 101
вложеному клипу тяжело быть ограничением для родителя - потому что сам двигается вместе с ним.

если движение происходит на поле сложной формы советую периодически проверять HitTest ом координаты родителя на клипе-подложки (который нарисован нужной формы и лежит под всеми другими клипами оформления)

Старый 05.01.2010, 04:23
vladislove вне форума Посмотреть профиль Отправить личное сообщение для vladislove Найти все сообщения от vladislove
  № 7  
Ответить с цитированием
vladislove

Регистрация: Jul 2008
Сообщений: 31
все кажется разобрался
жаль что никто пример не привел - пришлось долго лазать по хелпу

Старый 06.01.2010, 02:43
Quarto вне форума Посмотреть профиль Отправить личное сообщение для Quarto Найти все сообщения от Quarto
  № 8  
Ответить с цитированием
Quarto

Регистрация: Aug 2009
Сообщений: 14
казалось бы все просто - получил координаты детенка внутри клипа, и прибавил их к координатам родителя - и получил положение hitL_mc на основной сцене. В этом, вероятно, и состоит суть функции localToGlobal().

Старый 06.01.2010, 05:05
vladislove вне форума Посмотреть профиль Отправить личное сообщение для vladislove Найти все сообщения от vladislove
  № 9  
Ответить с цитированием
vladislove

Регистрация: Jul 2008
Сообщений: 31
в общем да - зато освоил новую для себя операцию

To Fessor :
Я поначалу так и начал делать,но дело в том что у меня сверху двигающегося родителя находится маска сложной формы,а родитель состоит из картинок,расположенных горизонтально одна за другой.
Все это двигается влево-вправо взависимости от положения мыши относительно центра обьекта-маски.Соответственно самая левая и самая правая картинки являются ограничителями ( я ,честно говоря, не придумал как по-другому сделать ограничения) и из всего родителя видется только то ,что внутри маски
В хэлпе прочел про ХитТест - как я понял он срабатывает если хотя бы одна точка из обьекта попадает в область ХитТеста.Получается,что крайние картинки еще не успевают целиком попасть в область маски.Я еще не опытен в программинге (пришлось осваивать ,хоть и не хотелось,но теперь не жалею,так как на сайте который я делаю нет ни одной не программной анимации) и наверняка все можно было сделать по-другому(проще).Был бы очень признателен членам сообщества за информацию о том ,как такое делать правильно

Вот Код который у меня получился

Код AS1/AS2:
/*import mx.transitions.Tween;  // пытался с помощью Твин решить задачу
import mx.transitions.easing.*;*/
var Mousemove = false;
var Dir = 0;
var Speed = 0;
// var Hit = false; // осталось от попытки справиться с помощью хиттеста
 
 
 
hitarea_mc.onRollOver = function() {  // hitarea_mc лежит выше маски и прозрачен а так же задает область активности мыши
	Mousemove = true;
};
hitarea_mc.onRollOut = function() {
	Mousemove = false;
};
this.onMouseMove = function() {
	if (_xmouse<mask_mc._x) {
		Dir = -1;
	} else {
		Dir = 1;
	}
};
 
this.onEnterFrame = function() {
	Speed = Math.abs(this._xmouse-this.mask_mc._x)/20;
	//------------------------------------------------------ переменные левой и правой границы
	var ptXl = this.tn_mc.hitareaL_mc._x;
	var ptYl = this.tn_mc.hitareaL_mc._y; 
	var ptXr = this.tn_mc.hitareaR_mc._x;
	var ptYr = this.tn_mc.hitareaR_mc._y;
	//------------------------------------------------------ точки-обьекты
	var pointL:Object = {x:ptXl, y:ptYl};
	var pointR:Object = {x:ptXr, y:ptYr};
	//------------------------------------------------------ перевод в глобальную систему координат
	tn_mc.hitareaL_mc.localToGlobal(pointL);
	tn_mc.hitareaR_mc.localToGlobal(pointR);
	//------------------------------------------------------ анимация движения
 
	if ((pointL.x<=this.mask_mc._x) && (pointR.x-this.tn_mc._width>=this.mask_mc._x)) {
		Speed += 0;
	} else {
		Dir *= -1;
	}
 
	if (Mousemove == true) {
		tn_mc._x += Speed*Dir;
	}
};
Добавлено через 18 минут
На самом деле работает немного не так как хотелось.
Хотелось чтоб анимация останавливалась при достижении границ ,а затем возобновлялась при новом движении мыши.Остановить получилось а вот возобновить движение никак(может и можно было , введя какой нить дополнительный логический флажок),но я устал париться и решил просто менять направление движения на противоположное,не останавливая при этом само движение

Добавлено через 28 минут
Еще подскажите плз возможно ли помещение подобного кода внутрь цикла For или While.
Основной клип планируется размножить по вертикали в колличестве 10-12 шт
Не размножать же код

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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