Показать сообщение отдельно
Старый 19.07.2009, 16:05
greenhill вне форума Посмотреть профиль Отправить личное сообщение для greenhill Посетить домашнюю страницу greenhill Найти все сообщения от greenhill
  № 5  
Ответить с цитированием
greenhill
 
Аватар для greenhill

Регистрация: Mar 2009
Сообщений: 281
Отправить сообщение для greenhill с помощью ICQ
Код AS1/AS2:
//// Флаг, сохранять ли пропорции
var constrain:Boolean = false;
////
var mc:MovieClip = _root.createEmptyMovieClip("mc", 20);
mc.lineStyle(0,0,0);
mc.beginFill(0x66aa66);
mc.moveTo(10,20);
mc.lineTo(200,240);
mc.lineTo(300,50);
mc._x = 100, mc._y = 80
mc.onPress = startScale;
mc.onRelease = mc.onReleaseOutside = stopScale;
////
var startX:Number;
var startY:Number;
var startXscale:Number;
var startYscale:Number;
var koefXY:Number;
////
var centerX:Number = mc._x + mc._width/2;
var centerY:Number = mc._y + mc._height/2;
////
function startScale () : Void 
{
	startXscale = this._xscale;
	startYscale = this._yscale;
	startX = _root._xmouse;
	startY = _root._ymouse;
	var kx = Math.sqrt(Math.pow(startX - centerX, 2) + Math.pow(startY - centerY, 2));
	koefXY = startXscale/kx;
	this.onMouseMove = dragScale;
}
function stopScale () : Void
{
	this.onMouseMove = null;
}
function dragScale () : Void 
{
	//// SCALE XY
	var xdir:Number = (startXscale>0 ? 1 : -1);
	var ydir:Number = (startYscale>0 ? 1 : -1);
	var vx:Number = (centerX > startX) ? startX - _root._xmouse : _root._xmouse - startX;
	var vy:Number = (centerY > startY) ? startY - _root._ymouse : _root._ymouse - startY;
	if(constrain)
	{
		var dirX = (_root._xmouse > centerX)&&(startX > centerX) ? 1 : (_root._xmouse < centerX)&&(startX < centerX) ? 1 : -1;
		var dirY = (_root._ymouse > centerY)&&(startY > centerY) ? 1 : (_root._ymouse < centerY)&&(startY < centerY) ? 1 : -1;
		var deltaXY = Math.sqrt(Math.pow(centerX - _root._xmouse, 2) + Math.pow(centerY - _root._ymouse, 2));
		this._yscale=this._xscale = koefXY*deltaXY*dirX*dirY;//
	}
	else
	{
		this._xscale = startXscale + vx*xdir;
		this._yscale = startYscale + vy*ydir;
	}
	////  XY
	var _xdir:Number = (this._xscale>0 ? 1 : -1);
	var _ydir:Number = (this._yscale>0 ? 1 : -1);
	this._x = centerX - this._width*_xdir/2;
	this._y = centerY - this._height*_ydir/2;
	////
	updateAfterEvent();
}
Скажите, почему когда размер именяемого клипа делаем больше или меньше 100, то клип за который тянем для изменения первого, не находится в правом нижнем углу первого?
__________________
http://zenpro.blogspot.com/


Последний раз редактировалось iNils; 20.07.2009 в 13:33.