Показать сообщение отдельно
Старый 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 шт
Не размножать же код