افزونه 1 مشکل در currentFrame

hsoft_project

New Member
با سلام خدمت تمام اساتید . من میخوام یک دکمه درست کنم که وقتی موس رفت روش تا فریم 20 اجرا کنه و وایسه و بعد موس که کنار رفت از فریم 20 تا 40 اجرا کنه من تو دوتا دکمه اول موفق شدم ولی از بعد از 2 دکمه اول (یعنی از دکمه سه) با همون کدهای قبلی ولی اون اتفاق نمیفته و از فریم 20 رد میشه ده بار پاک کردم دکمه رو باز درست کردم ونشد کلافه شدم. کدش به شکل زیره





PHP:
import fl.motion.MotionEvent;

btn_object.addEventListener(MouseEvent.MOUSE_OVER,btn_control_menu_mousehover, false, 0, true);

function btn_control_menu_mousehover(evt:MouseEvent) :void
{
    btn_object.play();
    //btn_main_menu.txt_main_menu.play();
    
    if(btn_object.currentFrame== 20)
    
        btn_object.stop();
    //btn_main_menu.txt_main_menu.stop();

    
}
btn_object.addEventListener(MouseEvent.MOUSE_OUT,btn_control_menu_mouseout, false, 0, true);
function btn_control_menu_mouseout(evt:MouseEvent) :void
{
    btn_object.gotoAndPlay(20);
    //btn_main_menu.txt_main_menu.gotoAndPlay(20);
    if(btn_object.currentFrame== 40){
    btn_object.stop();
    //btn_main_menu.txt_main_menu.stop();
    }
}
همین کد در دو دکمه قبل که درست کردم به خوبی کار میکنه ولی این یکی نه فقط جای btn_object در دکمه های دیگه اسم های خودشونو گذاشتم. جالب اینجاست که وقتی دستور play رو اجرا میکنم یا stop رو اجرا میکنم کار میکنه ولی currentFrame را که میخوام بگیرم همیشه 1 هست در صورتی که 40 فریم هست
لطفا کمک کنید
 

erfan.h

Member
من نمی دونم این کد برای بقیه ی دکمه ها چه جوری کار کرد و الگوریتم اشتباه ست
کد if(btn_object.currentFrame== 20) و if(btn_object.currentFrame== 40) وقتی اجرا میشن که موس روی دکمه میره و میآد و در هر دو حالت نباید کار کنه(مگر اینکه وقتی روی فریم 40 ست موس رو از روی دکمه بکشی که بایسته )
باید این دوشرط رو توی enter fream بزاری تا کار کنه
می تونی هم دو تا بولن بزاری و شرط رو توی فریم 20 و 40 موی کلیپ بنویسی
می تونی هم دو تا setTimeOut بزاری که بعد از زمان مشخص stop کنه

ولی currentFrame را که میخوام بگیرم همیشه 1 هست در صورتی که 40 فریم هست

این مشکل قبلا برای من هم پیش اومده (فک کنم باگ باشه:sad:) راه های دیگه رو امتحان کن

راستی چرا یه تابع واسه ی همه ی دکمه هات نمی نویسی
 

mohammad.sub7

کاربر فعال
ببخشید اما چرا لقمه رو دور سرش آدم بپیچونه؟

این راه فرعی که از بیرون مووی کلیپ مووی مثل دکمه عمل کنه:
[PHPS]b_mc.addEventListener(MouseEvent.ROLL_OVER , over);

b_mc.addEventListener(MouseEvent.ROLL_OUT , out);

function over (event:MouseEvent):void

{
b_mc.gotoAndPlay(2);

}

function out (event:MouseEvent):void

{
b_mc.gotoAndPlay(16);
}

b_mc.buttonMode=true;
[/PHPS]
اما روش ساده اینکه بریم داخل مووی کلیپ بعد فریم 1 :
[PHPS]over_btn2.addEventListener(MouseEvent.ROLL_OVER ,ov);
function ov(event:MouseEvent):void
{
gotoAndPlay(2);
}
over_btn2.addEventListener(MouseEvent.ROLL_OUT ,out);
function out(event:MouseEvent):void
{
gotoAndPlay(21);
}[/PHPS]​
 

mohammad.sub7

کاربر فعال
البته واسه دکمه های 1 شکل تعداد بالا از آرایه و حلقه میشه استفاده کرد یعنی 1 دکمه بسازیم ازش 20 تا کپی بگیریم با عکس و متن مختلف.

اما دکمه ساده نیاز به if نداره
 

erfan.h

Member
بببخشید یه سوال
اگه وقتی روی فریم 15 است و موس بیرون برود از فریم 15 تا 40 اجرا میشود یا از فریم 20 تا 40 ؟؟؟؟؟
در ضمن تو روش محمد توی فریم 20 باید نوشت stop();

اگه منظورت اولیه راحت ترین کار استفاده از بولن هاست
اگه منظورت دومیه روش محمد بهتره
 

mohammad.sub7

کاربر فعال
قطعاً با over فریم 20 به بعد اجرا میشه اما. فرآیند اینقدر سریع هست که حس نمیکنیم. چون اگه مثلاً frame rate 35 باشه دیگه به محض اینکه over بشیم 0.5 ثانیه به فریم مثلاً 20 میرسه واسه همین پیش نمیاد این اتفاق که هنوز over تموم نشده فرآیند out اجرا بشه. نمیدونم منظورم رو رسوندم یا نه.
 

hsoft_project

New Member
من نمی دونم این کد برای بقیه ی دکمه ها چه جوری کار کرد و الگوریتم اشتباه ست
کد if(btn_object.currentFrame== 20) و if(btn_object.currentFrame== 40) وقتی اجرا میشن که موس روی دکمه میره و میآد و در هر دو حالت نباید کار کنه(مگر اینکه وقتی روی فریم 40 ست موس رو از روی دکمه بکشی که بایسته )
باید این دوشرط رو توی enter fream بزاری تا کار کنه
می تونی هم دو تا بولن بزاری و شرط رو توی فریم 20 و 40 موی کلیپ بنویسی
می تونی هم دو تا setTimeOut بزاری که بعد از زمان مشخص stop کنه



این مشکل قبلا برای من هم پیش اومده (فک کنم باگ باشه:sad:) راه های دیگه رو امتحان کن

راستی چرا یه تابع واسه ی همه ی دکمه هات نمی نویسی


با تشکر از تمام دوستان بابت جوابهایی که دادن ولی شما دوست عزیز چرا میگید کلا اصول اشتباه و تو بقیه دکمه ها نباید این مورد کار کنه؟ من خروجی فایل swf رو میذارم شما تست کنید ببینید میشه و حرف من درست هست یا نهمشاهده پیوست main_Scene 1.zip
 

erfan.h

Member
هااااااا؟؟؟؟؟؟
من که نفمیدم.....:shock:
اشکال از منه یا از فلش
واسه دو وکمه ی اولی تابع btn_control_menu_mousehover هم وقتی توی فریم 20 اجرا می شه هم وقتی توی فریم یک هست یعنی چند بار اجرا میشه
چراااااااا؟؟؟؟؟:-?
این باگه یا..؟
واسیه دو تا دکمه ی دومی این اتفاق نمی افته و عادی کار می کنه
ولی دلیل اون تکرار چه
فک کردیم این بلا ها فقط سر benyamin_pc میآد
....
 

hsoft_project

New Member
من از دوستان اینگلیسی زبان هم کمک گرفتم ولی متاسفانه اون ها هم تو این موضوع عاجز بودند و متعجب چه باید کرد با این مشکل؟
 

erfan.h

Member
این یه باگه
نمونه ی شمارو با توجه به باگ می شه درست کرد
یعنی برای دو دکمه ی دومی از روش صحیح استفاده کرد
 

erfan.h

Member
روش خودت واسه ی دو تا دکمه ی اولی که باگ دارند جواب میده واسه ی دو تا دکمه ی بعدی از راه محمد برو و توی فریم 20 و 1 بنویس stop()
 

erfan.h

Member
یه کارایی هست که می تونی بکنی بعد ببینی باگ حل می شه یا نه
همه ی فریم ها تو کپی کن توی یه فایل دیگه پیست کن
اسم فایلت رو تغییر بده و یه جای دیگه ذخیره کن
 

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

بالا