واضح آرشیو وب فارسی:سایت ریسک: حرکت شی با اکشن اسکریپت reza_pnu_ney 10 مهر 1389, 12:02با سلام من تازه دارم با as3 کار می کنم و مثالهای این سایت رو واسه تمرین، تغییر میدم. امروز به یه مشکل خوردم. من یه سری کار رو با رخداد enterframe انجام می دم. حالا می خوام در یه قسمت از برنامه،یه کار دیگه به این کارها اضافه کنم [یعنی علاوه بر اون کارهایی که رخداد enterframe در حال انجامشون هست، یه کار دیگه رو هم به کارهایی که داره در هر لحظه انجام میشه ، اضافه کنم.] چطوری باید این کار رو انجام بدم. DaDaDooDoo 10 مهر 1389, 13:54اصلاً منظورت واضح نبود ... reza_pnu_ney 10 مهر 1389, 19:26مجددا سلام و ممنون بخاطر خوندن سوال من ببینید ! من یه مووی کلیپ خرگوش درست کردم که می خوام هر 2 ثانیه یه کپی از اون در سمت چپ صفحه ایجاد بشه و شروع کنه به حرکت به سمت راست. پس از دو ثانیه خرگوش بعدی در سمت چپ صفحه ایجاد بشه و اون هم به سمت راست حرکت کنه.اما با ورود خرگوش جدید، خرگوشهای قبلی از حرکت می ایستند این هم کد 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++ 10 مهر 1389, 19:39import 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 ثانیه از چپ ترین ناحیه به راست ترین ناحیه حرکت می کنند . بای... reza_pnu_ney 10 مهر 1389, 19:54آیا نمیشه با رخداد enterframe اینکار رو کرد؟ کلا اصرار من بر روی این کد فقط برای حرکت یک شی نیست. من میخوام بدونم آیا میشه که هنگامی که برای Enterframe یک وظیف تعریف کردیم، در ادامه برنامه وظیفه اونو گسترش بدیم، (بدون اینکه نیاز باشه از وظایف قبلیش مطلع باشیم) DaDaDooDoo 10 مهر 1389, 20:04من این رو با enter_frame ساختم برات . البته روش منطقیش همونه که هادی خان گفت . هر چی از enter_frame کمتر استفاده کنی بهتره چون از cpu زیاد استفاده می کنه . مشکل شما هم این بود که باید به خود آبجکت (خرگوش) رویداد enter_frame رو منصوب کنی شما وقتی به استیج این رویداد رو منصوب می کنی وقتی آبجکت عوض می شه (خرگوش جدید) دستورات تابع مربوطه به آبجکت جدید اعمال می شه . راستی من دایره کشیدم شما به عنوان خرگوش از من قبول کن . reza_pnu_ney 10 مهر 1389, 20:31جناب hadimetal و Dadadoodoo ممنون از پاسختون و از اینکه برای سوال من وقت گذاشتید خیلی متشکرم. جوابی که دنبالش بودم همین بود. بازم ممنون reza_pnu_ney 10 مهر 1389, 21:25یه سوال دیگه برام پیش اومده . ما همیشه از دستور movieClip به این صورت استفاده می کردیم : Var myClip = new MovieCip(); یعنی داخل پرانتز MoviClip خالیه. اما در مثالی که dadadoodoo فرستادن این کد به این شکله Target = new MovieClip(); Target = MovieClip(MyRabit); اگه دوستان لطف کنن یه توضیح در این مورد بدن که مقدار داخل پرانتز MovieClip به چه منظور گذاشته شده ممنون میشم و یه مسئله دیگه اینکه قبلا فلش reference خوبی داشت که این مشکلات رو با استفاده از اون حل می کردم و توضیح کاملی در مورد توابع و دستورات اکشن اسکریپت با تمام حالات ممکن ارائه میکرد. اگه دوستان سایتی رو که بتونم این استفاده رو ازش بکنم رو معرفی بکنند ممنون می شم. DaDaDooDoo 10 مهر 1389, 23:28اگه دوستان لطف کنن یه توضیح در این مورد بدن که مقدار داخل پرانتز MovieClip به چه منظور گذاشته شده ممنون میشم وقتی شما میگید : var MC:MovieClip = new MovieClip(); در واقع دارید از کلاس مووی کلیپ یک نمونه جدید می سازید و خوب چون کانسترکتور کلاس مووی کلیپ پارامتر ورودی از این نوع نداره از پرانتز خالی استفاده میشه (باید با مفاهیم OOP آشنا باشید) ، اما وقتی میگید : MC = MovieClip(Somthing); در واقع دارید آبجکت داخل پرانتز رو به شی ء مووی کلیپ کانورت می کنید .البته متغیر مورد نظر حتماً باید از نوع مووی کلیپ تعریف شده باشه و آبجکتی که دارید به مووی کلیپ تبدیل می کنید قابلیت تبدیل شدن به مووی کلیپ رو داشته باشه . برای مثال شما نمی تونید یک TextField رو از این طریق به مووی کلیپ کانورت کنید و با این ارور مواجه می شید : TypeError: Error #1034: Type Coercion failed: cannot convert flash.text::TextField@263ec0b 1 to flash.display.MovieClip. که معنیش این هست که یک TextField رو نمی تونم به مووی کلیپ کانورت کنم . برای منبع هم که گفتید ، سایت ادوبی . reza_pnu_ney 11 مهر 1389, 14:35جناب dadadoodoo از پاسخ کاملتون ممنون. سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 771]