Registertion Point on the AS3

BioDread

Banned
وقتی شما یه مووی با کد میسازین
به طور مثال
PHP:
var my_mov:MovieClip = new MovieClip();

نقطه register point ان کجاست؟
و چه طور میشه انو تغییر داد؟!
 

Insomnia

کاربر فعال
جواب اولی:
معلومه دیگه ، (0,0)
position: top-left
جواب دومی:
متاسفانه به صورت مستقیم نه تو flash, و نه flex این امکان وجود نداره و باید خودتان دست به کار شوید!
راه اول: یک registerpoint مجازی یعنی میتونی از یک sprite استفاده کنی و داخل sprite یک MovieClip رو load کنی...

راه دوم:از این کلاس معروف استفاده کنی:
oscartrelles
راه سوم:
Linkage for actionscript(بستگی به کارت داره!(

شاید این کد به دردت بخوره:
PHP:
public function setRegistrationPoint(s:Sprite, regx:Number, regy:Number,  showRegistration:Boolean )
{
//translate movieclip 
s.transform.matrix  = new Matrix(1, 0, 0, 1, -regx, -regy);

//registration point.
if  (showRegistration)
{
var mark:Sprite = new  Sprite();
mark.graphics.lineStyle(1, 0x000000);
mark.graphics.moveTo(-5,  -5);
mark.graphics.lineTo(5, 5);
mark.graphics.moveTo(-5,  5);
mark.graphics.lineTo(5,  -5);
s.parent.addChild(mark);
}
}
طریقه مصرف:
برای مرکز قرار گرفتن
PHP:
setRegistrationPoint( mc, mc.width >> 1, mc.height >> 1, true);
برای صدا زدن ، addchild اول از مووی کلیپ مورد نظر برای صدا زدن این متود استفاده کن

منبع کد صلی
 

BioDread

Banned
ببین دوست من
من یه مووی ساختم که توسط یه متغییر width و height تغییر میکنه
وقتی تغییر میکنه از 0.0 و یا همون top,left اندازش تغییر میکنه
من میخوام از وسط به دوطرف بره
فکر کنم اینو میدونستی
نمی دونم چرل دوباره گفتم!!!!
حالا راه اول که گفتی یه توضیح اگه میشه راجع بش بده
راه دوم اگه میشه کلاسشو upload کن تو همین تاپیک و لطف کن یه مثال هم با همون کلاس بزن
راه سوم فکر کنم همون راه اول باشه
من راجع به transform و matrix چیزی نمی دونم اگه میشه یه توضیح راجع بش بده
من اگه به موویم tween بدم با این راه سوم کار میکنه؟
مرسی از کمکت
 

bahoush

New Member
حرف يه بيسواد

movieClip اي كه ميخواي از مركز تغيير بدي (sub_mc) رو درون يه مووي كليپ خالي قرار بده (super_mc) و از كد زير براي تغيير موقعيت x و y كليپ داخلي استفاده كن

PHP:
sub_mc.x -= sub_mc.width / 2;
sub_mc.y -= sub_mc.height / 2;

حالا با تغيير ويژگيهاي width و height ، از super-mc تغييرات از مركز sub_mc اعمال ميشه
 

BioDread

Banned
ببخشيد، من خوب متوجه نشدم ،‌ از نظر شما كد مشكل داره؟؟؟

خوب هنوز register point مووی دوم یعنی super_mc معلوم نیست
با این کار فقط register point مووی اول یعنی sub_mc تغیر میکمه
من میخوام اگه مقدار super_mc رو تغییر دادم از وسط به دو طرف بره
من اگه مقدار width مووی دوم رو تغییر بدم از 0.0 تغییر میکنه
 

Insomnia

کاربر فعال
سلام
فکر کنم اینو میدونستی
نمی دونم چرل دوباره گفتم!!!!
؟
حالا راه اول که گفتی یه توضیح اگه میشه راجع بش بده
کامل شده ی کد
PHP:
sub_mc.x -= sub_mc.width / 2; 
sub_mc.y -= sub_mc.height / 2;
PHP:
var mParent:MovieClip = myMovieClip.parent
var holder:Sprite = new Sprite()
mParent.addChildAt(holder,mParent.getChildIndex(myMovieClip))
myMovieClip.parent.removeChild(myMovieClip)
holder.addChild(myMovieClip)
myMovieClip.x = myMovieClip.width/2
myMovieClip.y = myMovieClip.height/2
راه دوم اگه میشه کلاسشو upload کن تو همین تاپیک و لطف کن یه مثال هم با همون کلاس بزن
نمیدونم چرا لینکش ...!!
پیدا میکنم میزارم و مثالش که ساده است:
PHP:
myMovieClip.setRegistration();
راه سوم هم منظورم این بود که مووی کلیپ رو خودت درست کنی، و registerPoint اون رو هم دستی تغییر بدی و بعد Linkage کنی و موقع کد ازش استفاده کنی فکر کنم register اون وسط باشه.
در مورد Matrix یه کلاس میباشد برای movieclip/sprite که انواع حرکت ها پیچیده و ساده رو میشه با این داد مثل
translate, rotate,identity,skew, scale, angle,خلاصه هرچی به تغییر MovieClip مربوط باشه...
آموزش خواستی الان وقتش رو ندارم! ولی اگه خواستی در آینده نزدیک میزارم و یا این که خود helpflash فکر کنم جامع باشه
این هم خواستی یه نگاه بنداز!
مشاهده پیوست Matrixtest.rar
 

BioDread

Banned
PHP:
var mParent:MovieClip = myMovieClip.parent
var holder:Sprite = new Sprite()
mParent.addChildAt(holder,mParent.getChildIndex(myMovieClip))
myMovieClip.parent.removeChild(myMovieClip)
holder.addChild(myMovieClip)
myMovieClip.x = myMovieClip.width/2
myMovieClip.y = myMovieClip.height/2
میشه راجع به خط یک و دو یه توضیح بدی
اینا چه نقسی دارن؟
 
بالا