سلام
از این دوستم ممنونم برای این پستش چون باعث شد من یادم بیاد که میخواستم در این مورد فعالیتی داشته باشم
من تو مثالایی که دوستمون قرار داده بود یک مورد رودیدم که از روش برش یه عکس و تغییر مقیاسش برمبنای x و y موس یک شکل سه بعدی ساخته بود ترفند خیلی جالبی یه
من روش ساختن این ترفند رو می گم
برای شروع یه movieclip می سازیم (ctrl+F8) تو movieclip یه tween می سازیم البته باید این tween یه شرایطی داشته باشه
1- بهتزه از shaptween برای این کار استفاده کنین
2- بهتره همه ی مرکز شکل ها بر مرکز movieclip منطبق باشه یا فاصله ی زیادی نداشته باشه
من برای مثال یه نمونه رو می گم :
داخل movieclip یه دایره در فریم اور بکشید و مرکز دایره را با مرکز Movieclip منطبق کنین اندازه ی اون رو بزارید 214.0 * 214.0 و رنگش رو هم مشکی بزارید
به فریم 30 برید با زدن F6 یه فریم ایجاد کنین یه دایره با اندازه یه 18*18 رسم کنین و مرکزش رو با مرکز movie clip منطبق کنین رنگش رو کم یه رنگ روشن انتخاب کنین مثلا #00FFFF
بین فریم های 1 و 30 را انتخاب کنین و در پنل proprties گزینه ی tween رو برابر shap بزارید
خوب حالا در داخل پنل library بر روی movie clip کلیک راست کنین و بعد linkage را انتخاب کنین گزینه های Export for Actionscript و export in first frame را انتخاب کنین و Identifer را n بگزارید این اسمی هست که ما به وسیله یه action مووی کلیپ رو از library می خونیم بر روی ok بزنید و به Scene 1 بروید فریم اول را انتخاب کنید
و در دخل اون این action را وارد کنین
PHP:
var sliceNum = 30;
var step = 4;
var X = 200;
var Y = 200;
createEmptyMovieClip("newM",0);
newM._x = X;
newM._y = Y;
for (i=0; i<sliceNum; i++) {
newM.createEmptyMovieClip("slice"+i,i);
newM["slice"+i].attachMovie("n","n"+i,i);
newM["slice"+i]["n"+i].gotoAndStop(i+1);
newM["slice"+i].number = i;
newM["slice"+i].onEnterFrame = scale;
}
function scale() {
var a = _root._ymouse;
this._y = ((this.number*_root.step*Math.cos(a*Math.PI/180))*-1);
this._yscale = Math.sin(a*Math.PI/180)*100;
}
sliceNum برابر تعداد برش هایی هست که باید ایجاد بشه که با تعداد فریم های movie clip برابره
step فاصله ی بین هر برش
X مکان x شکل در root
Y مکان y شل در root
PHP:
createEmptyMovieClip("newM",0);
در این خط از کد ما یه movieclip ایجاد کرده ایم که تمام اجزا در این movieclip ایجاد می شه
PHP:
newM._x = X;
newM._y = Y;
در اینجا مکان x و y رو تعیین می کنیم
PHP:
for (i=0; i<sliceNum; i++) {
newM.createEmptyMovieClip("slice"+i,i);
newM["slice"+i].attachMovie("n","n"+i,i);
newM["slice"+i]["n"+i].gotoAndStop(i+1);
newM["slice"+i].number = i;
newM["slice"+i].onEnterFrame = scale;
}
در این جا با ایجاد یه حلقه در هر بار یه movie clip ایجاد می شه و در داخل هر movie clip ایجاد شده movie clip ای که در library قرار داره رو لود می کنیم و هر برش ( که هر یک ار فریم های movie clip هست ) را بر اساس شمارندهی حلقه تعیین می کنیم و برای هر یک یه onEnterFrame ایجاد می کنیم که در هر EnterFrame تابع scale فرا خوانی میشه
PHP:
function scale() {
var a = _root._ymouse;
this._y = ((this.number*_root.step*Math.cos(a*Math.PI/180))*-1);
this._yscale = Math.sin(a*Math.PI/180)*100;
}
این تابع مبنای y موس (فاصله ی y موس از مبدا) y و yscale هر برش رو تعیین می کنه تا باعث ساخت این ترفند می شه
در واقع همون طور که دوستمون روشنایی گفت تو این تابع ما با نوعی حرکت بر روی محور Y محور z رو می سازیم
این هم یه مثال :