انتقال نقطه registration به مرکز

سلام دوستان
من یک new movieclip در صفحه ایجاد کردم و سپس چندین مووی کلیپ لینکیج شده را از کتابخانه در داخل آن اضافه کردم حال می خوام با استفاده از tween مووی کلیپ مادر (new movieclip) را تغییر سایز بدم اما می بینم که نقطه registration در گوشه بالا و چپ قرار دارد و تغییر سایز نسبت به ان صورت میگیرد
آیا روشی است که بتوان نقطه registration را به مرکز اشیا اضافه شده در مووی کلیپ مادر منتقل کرد؟
ممنون از جواباتون
 

JavidFlasher

کاربر فعال
سلام با تبدیل های localtoGlobal و از این چیزا میتونی اوکیش کنی
اما برای راحتی کار base class موی کلیپتو بزار رو این کلاس:
[JSS]package{
import flash.display.MovieClip;
import flash.geom.Point;


/**
* Extends MovieClip adding a dynamic registration point
*
* Based on AS2 work by Darron Schall (www.darronschall.com)
* Original AS1 code by Robert Penner (www.robertpenner.com)
*
* @author Oscar Trelles
* @version 1.0
* @created 12-Mar-2007 11:53:50 AM
*/
public class DynamicMovie extends MovieClip
{
public var rp:point;


function DynamicSprite()
{
setRegistration();
}


public function setRegistration(x:Number=0, y:Number=0):void
{
rp = new Point(x, y);
}


public function get x2():Number
{
var p:point = this.parent.globalToLocal(this.localToGlobal(rp));
return p.x;
}


public function set x2(value:Number):void
{
var p:point = this.parent.globalToLocal(this.localToGlobal(rp));
this.x += value - p.x;
}


public function get y2():Number
{
var p:point = this.parent.globalToLocal(this.localToGlobal(rp));
return p.y;
}


public function set y2(value:Number):void
{
var p:point = this.parent.globalToLocal(this.localToGlobal(rp));
this.y += value - p.y;
}


public function get scaleX2():Number
{
return this.scaleX;
}


public function set scaleX2(value:Number):void
{
this.setProperty2("scaleX", value);
}


public function get scaleY2():Number
{
return this.scaleY;
}


public function set scaleY2(value:Number):void
{
this.setProperty2("scaleY", value);
}


public function get rotation2():Number
{
return this.rotation;
}


public function set rotation2(value:Number):void
{
this.setProperty2("rotation", value);
}


public function get mouseX2():Number
{
return Math.round(this.mouseX - rp.x);
}


public function get mouseY2():Number
{
return Math.round(this.mouseY - rp.y);
}


public function setProperty2(prop:String, n:Number):void
{
var a:point = this.parent.globalToLocal(this.localToGlobal(rp));


this[prop] = n;


var b:point = this.parent.globalToLocal(this.localToGlobal(rp));


this.x -= b.x - a.x;
this.y -= b.y - a.y;
}
}
}[/JSS]
 
سلام JavidFlasher
ممنون از جوابت
شرمنده کد که گذاشتی یکمی پیچیدست و من هم هر چی از globaltolocal و localtoglobal تو وب سرچ کردمو خوندم نتونستم ازشون توی tween در scale استفاده کنم
ممنون میشم اگه یکم بیشتر توضیح بدید یا مرجعی رو معرفی کنید و همچنین می خواستم بدونم این کار رو میشه بدون استفاده از کلاس جداگانه و در خود فریم نیز انجام داد ؟
 

JavidFlasher

کاربر فعال
شما کافیه یه کلاس بسازین کنار پروژتون به نام DynamicMovie.as که حاوی این کد های بالا باشه
بعد موی کلیپتون رو تو library راست کلیک کنید properties.. بعد تو قسمت class بزارین DynamicMovieحالا این ن رجیستر پوینت موی کلیپتون رو میتونین با متد setRegistration تغیر بدیو scaleY2,scaleX2 رو هم برای scale کردنش
مثلا:
[JSS]mc.setRegistration(mc.mouseX,mc.mouseY);[/JSS]
 

جدیدترین ارسال ها

بالا