حرکت شی با اکشن اسکریپت

با سلام
من تازه دارم با as3 کار می کنم و مثالهای این سایت رو واسه تمرین، تغییر میدم. امروز به یه مشکل خوردم.
من یه سری کار رو با رخداد enterframe انجام می دم.
حالا می خوام در یه قسمت از برنامه،یه کار دیگه به این کارها اضافه کنم [یعنی علاوه بر اون کارهایی که رخداد enterframe در حال انجامشون هست، یه کار دیگه رو هم به کارهایی که داره در هر لحظه انجام میشه ، اضافه کنم.]
چطوری باید این کار رو انجام بدم.
 
آخرین ویرایش:
مجددا سلام و ممنون بخاطر خوندن سوال من
ببینید !
من یه مووی کلیپ خرگوش درست کردم که می خوام هر 2 ثانیه یه کپی از اون در سمت چپ صفحه ایجاد بشه و شروع کنه به حرکت به سمت راست. پس از دو ثانیه خرگوش بعدی در سمت چپ صفحه ایجاد بشه و اون هم به سمت راست حرکت کنه.اما با ورود خرگوش جدید، خرگوشهای قبلی از حرکت می ایستند
این هم کد


PHP:
var timer:Timer = new Timer(1500,5);
timer.addEventListener(TimerEvent.TIMER,ijad);
timer.start();

function ijad(evt:TimerEvent):void
{
   var adad:Number = timer.currentCount;
      this["khargoosh"+adad]= new rabit();
   addChild(this["khargoosh"+adad]);
   this["khargoosh" + adad].x = 100;
   this["khargoosh" + adad].y = 100;
   stage.addEventListener(Event.ENTER_FRAME,harkat);
}
function harkat(event):void
{
   this["khargoosh" + timer.currentCount].x++;
}

البته من نمی خوام که از حلقه ها استفاده کنم چون حلقه ها تنها در صورتی استفاده می شه که مثل اینجا، اسامی اشیا شبیه هم باشه. بلکه می خوام یه کدی بنویسم که بشه برای اشیایی با اسامی مختلف استفاده کرد
 

++Hadi++

Active Member
PHP:
import com.greensock.Tweenmax;
import com.greensock.easing.*;
var timm:Timer=new Timer(1500,5);
timm.addEventListener(TimerEvent.TIMER,fun);
timm.start();
function fun(evt:TimerEvent):void
{
   var mc:RabitClass=new RabitClass();
    addChild(mc);
    mc.x=0;
    mc.y=50;
    TweenMax.to(mc,10,{x:stage.stageWidth,ease:Linear.easeNone});
}
اینطوری 5 بار هر 1 ثانیه و نیم یه خرگوش درست می شه البته به شرط اینکه خرگوشا رو Linkage کنی و بعد در صحنه تا 10 ثانیه از چپ ترین ناحیه به راست ترین ناحیه حرکت می کنند .
بای...
 
آیا نمیشه با رخداد enterframe اینکار رو کرد؟
کلا اصرار من بر روی این کد فقط برای حرکت یک شی نیست. من میخوام بدونم آیا میشه که هنگامی که برای Enterframe یک وظیف تعریف کردیم، در ادامه برنامه وظیفه اونو گسترش بدیم، (بدون اینکه نیاز باشه از وظایف قبلیش مطلع باشیم)
 

DaDaDooDoo

کاربر VIP
من این رو با enter_frame ساختم برات . البته روش منطقیش همونه که هادی خان گفت . هر چی از enter_frame کمتر استفاده کنی بهتره چون از cpu زیاد استفاده می کنه . مشکل شما هم این بود که باید به خود آبجکت (خرگوش) رویداد enter_frame رو منصوب کنی شما وقتی به استیج این رویداد رو منصوب می کنی وقتی آبجکت عوض می شه (خرگوش جدید) دستورات تابع مربوطه به آبجکت جدید اعمال می شه .

راستی من دایره کشیدم شما به عنوان خرگوش از من قبول کن .
 

پیوست ها

  • Rabit.rar
    8.4 کیلوبایت · بازدیدها: 21
آخرین ویرایش:
جناب hadimetal و Dadadoodoo ممنون از پاسختون و از اینکه برای سوال من وقت گذاشتید خیلی متشکرم.
جوابی که دنبالش بودم همین بود.
بازم ممنون
 
یه سوال دیگه برام پیش اومده .
ما همیشه از دستور movieClip به این صورت استفاده می کردیم :
PHP:
Var myClip = new MovieCip();
یعنی داخل پرانتز MoviClip خالیه. اما در مثالی که dadadoodoo فرستادن این کد به این شکله
PHP:
    Target = new MovieClip();
    Target = MovieClip(MyRabit);
اگه دوستان لطف کنن یه توضیح در این مورد بدن که مقدار داخل پرانتز MovieClip به چه منظور گذاشته شده ممنون میشم
و یه مسئله دیگه اینکه قبلا فلش reference خوبی داشت که این مشکلات رو با استفاده از اون حل می کردم و توضیح کاملی در مورد توابع و دستورات اکشن اسکریپت با تمام حالات ممکن ارائه میکرد. اگه دوستان سایتی رو که بتونم این استفاده رو ازش بکنم رو معرفی بکنند ممنون می شم.
 

DaDaDooDoo

کاربر VIP
اگه دوستان لطف کنن یه توضیح در این مورد بدن که مقدار داخل پرانتز MovieClip به چه منظور گذاشته شده ممنون میشم

وقتی شما میگید :

PHP:
var MC:MovieClip = new MovieClip();

در واقع دارید از کلاس مووی کلیپ یک نمونه جدید می سازید و خوب چون کانسترکتور کلاس مووی کلیپ پارامتر ورودی از این نوع نداره از پرانتز خالی استفاده میشه (باید با مفاهیم OOP آشنا باشید) ، اما وقتی میگید :

PHP:
MC = MovieClip(Somthing);

در واقع دارید آبجکت داخل پرانتز رو به شی ء مووی کلیپ کانورت می کنید .البته متغیر مورد نظر حتماً باید از نوع مووی کلیپ تعریف شده باشه و آبجکتی که دارید به مووی کلیپ تبدیل می کنید قابلیت تبدیل شدن به مووی کلیپ رو داشته باشه . برای مثال شما نمی تونید یک TextField رو از این طریق به مووی کلیپ کانورت کنید و با این ارور مواجه می شید :

PHP:
TypeError: Error #1034: Type Coercion failed: cannot convert flash.text::TextField@263ec0b1 to flash.display.MovieClip.

که معنیش این هست که یک TextField رو نمی تونم به مووی کلیپ کانورت کنم .

برای منبع هم که گفتید ، سایت ادوبی .
 

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

بالا