جابجایی فریم از مکان حاضر تا مکانهای پله کانی ++

aminzamani68

New Member
سلام به همگی
من خیلی از مشکلاتم با کدهای جابجایی فریم ها حل شده اما مشکلی که الان پیدا کردم رو ، هر روشی که به ذهنم رسید پیاده سازی کردم اما به نتیجه نرسید.
در مثال که پایین می بینید:
من میخواهم بگوییم که با هر بار کلیک بر روی doc_1 مووی کلیپ top_red از همان جایی که هستد play شود و در 5 فریم بعد stop شود. :?:
و همینطور برای doc_2 که با هر بار کلیک بر روی doc_2 مووی کلیپ top_red از همان جایی که هستد play شود و در 10 فریم بعد stop شود. :?:

در کد زیر که نوشتم باید بجای 5 و 10 چه دستوری پیاده کنم تا نتیجه مطلوب رو بگیرم، ! :-?
یا اگر این روشی که به کار بردم اشتباست، اشتباه منو تصحیح کنید. :cry:
فایل ضمیمه هم دانلود کنید تا بهتر متوجه بشین :wink:

[PHPS]
doc_1.addEventListener(MouseEvent.CLICK,func_1)
function func_1(evt1:MouseEvent):void{
top_red.play();
top_red.addEventListener(Event.ENTER_FRAME,func_1_1)
function func_1_1(evt2:Event):void{
if (evt2.currentTarget.currentFrame == 5 ){
evt2.currentTarget.stop();
top_red.removeEventListener(Event.ENTER_FRAME,func_1_1)
}
}
}


doc_2.addEventListener(MouseEvent.CLICK,func_2)
function func_2(evt1:MouseEvent):void{
top_red.play();
top_red.addEventListener(Event.ENTER_FRAME,func_2_2)
function func_2_2(evt2:Event):void{
if (evt2.currentTarget.currentFrame == 10 ){
evt2.currentTarget.stop();
top_red.removeEventListener(Event.ENTER_FRAME,func_2_2)
}
}
}


[/PHPS]
 

پیوست ها

  • currentFrame.zip
    20.2 کیلوبایت · بازدیدها: 4
آخرین ویرایش:

aminzamani68

New Member
جابجایی فریم ها از یک حاضر تا مکانهای پلکانی بعدی ++

دوستان کسی نمیتونه ما رو راهنمایی کنه :rose:
روش زیر و به کمک آرایه از طریقه های دیگه امکان پذیره اما در روشی که من میخوام امکان پذیر نیست :shock:

به مثال زیر دقت کنید
[PHPS]
var ary:Array = [1,5,10,15,20,25,30,35,40,45,50,55];
var num:int = 0;


doc_1.addEventListener(MouseEvent.CLICK,func_1)
function func_1(evt1:MouseEvent):void{
top_red.play();
top_red.addEventListener(Event.ENTER_FRAME,func_1_1)
function func_1_1(evt2:Event):void{
if (evt2.currentTarget.currentFrame == ary[++num] ){
evt2.currentTarget.stop();
top_red.removeEventListener(Event.ENTER_FRAME,func_1_1)
}
}
}


doc_2.addEventListener(MouseEvent.CLICK,func_2)
function func_2(evt1:MouseEvent):void{
top_red.play();
top_red.addEventListener(Event.ENTER_FRAME,func_2_2)
function func_2_2(evt2:Event):void{
if (evt2.currentTarget.currentFrame == ary[num+=2] ){
evt2.currentTarget.stop();
top_red.removeEventListener(Event.ENTER_FRAME,func_2_2)
}
}
}


[/PHPS]

فایل ضمیمه هم دانلود کنید تا بهتر متوجه بشید.
اگه کسی این مشکل رو بلده و وارده لطفا دریغ نکنید :sad:
 

پیوست ها

  • currentFrame2.zip
    20.3 کیلوبایت · بازدیدها: 1

++Hadi++

Active Member
وقت کنم ایشالا رسیدگی می کنم...یه کم درگیریم زیاده...شاید تا فردا پس فردا
 

aminzamani68

New Member
:cry: یعنی سوالم اینقدر سخت بود؟
باشه صبر میکنم، اما فکر کنم اشکالم تو ترتیب چیدمان کدهاست :sad:

موفق باشید، اگر کسی میدونه باید چیکار کرد همکاری کنه :rose:
 
شما باید در تابع func_1 ابتدا فریم جاری رو به دست بیارید و بعد اون رو پلی کنید تا بتونید5 فریم یا 10 فریم بعد اون رو متوقف کنید.
خوب این کار با تعریف یک متغیر امکان پذیر هست به این صورت:
[PHPS]var curFrame:uint=top_red.currentFrame[/PHPS]
و بعد در تابع func_1_1 در شرطی که گذاشتید به جای 5 یا 10 بنویسید curFrame+5 یا curFrame+10
امیدوارم مشکلتون حل بشه.فعلا به فلش دسترسی ندارم تا براتون یک نمونه بسازم
 

++Hadi++

Active Member
PHP:
import flash.events.MouseEvent;
import flash.events.Event;


var ary:Array = [1,5,10,15,20,25,30,35,40,45,50,55];
var num:int = 0;


doc_1.addEventListener(MouseEvent.CLICK,func_1);
doc_2.addEventListener(MouseEvent.CLICK,func_2);


function func_1(evt1:MouseEvent):void
{
    num=(num+1<ary.length)?num+1:0;
    top_red.addEventListener(Event.ENTER_FRAME,func_1_1);
    top_red.play();
}
function func_1_1(evt:Event):void
{
    if (evt.currentTarget.currentFrame == ary[num] )
    {
        evt.currentTarget.stop();
        top_red.removeEventListener(Event.ENTER_FRAME,func_1_1);
    }
}


function func_2(evt1:MouseEvent):void
{
    num=(num+2<ary.length)?num+2:0;
    top_red.addEventListener(Event.ENTER_FRAME,func_2_2);
    top_red.play();
}
function func_2_2(evt2:Event):void
{
    if (evt2.currentTarget.currentFrame == ary[num])
    {
        evt2.currentTarget.stop();
        top_red.removeEventListener(Event.ENTER_FRAME,func_2_2);
    }
}
 

aminzamani68

New Member
روشی دیگر برای حرکت از فریم جاری به فریم ++

از آقا جواد و آقا هادی واسه راهنمایی مفیدشون بسیار سپاسگذارم
من خودمم یه روش به سختی و زحمت در آوردم که واسه پروژه های بزرگ یه کم پیچیده میشه اما وظیفه دونستم این کد رو بذارم اینجا واسه یادگیری و استفاده دوستان :)

[PHPS]
import flash.events.MouseEvent;
import flash.events.Event;


var c:Number=5;
var n:Number=10;


doc_1.addEventListener(MouseEvent.CLICK,func_1)
function func_1(evt1:MouseEvent):void{
top_red.play();
top_red.addEventListener(Event.ENTER_FRAME,func_1_1)
function func_1_1(evt2:Event):void{
if (evt2.currentTarget.currentFrame == c ){
c +=5
n +=5
evt2.currentTarget.stop();
top_red.removeEventListener(Event.ENTER_FRAME,func_1_1)
}
}
}


doc_2.addEventListener(MouseEvent.CLICK,func_2)
function func_2(evt1:MouseEvent):void{
top_red.play();
top_red.addEventListener(Event.ENTER_FRAME,func_2_2)
function func_2_2(evt2:Event):void{
if (evt2.currentTarget.currentFrame == n ){
n +=10
c +=10
evt2.currentTarget.stop();
top_red.removeEventListener(Event.ENTER_FRAME,func_2_2)
}
}
}


[/PHPS]

فک کنم نیازی به توضیح نیست در کلید اول با هر بار کلیک فریم مساوی با c قرار میگیره و 5 مقدار هم به کلیدهایی که مووی کلیپ موردنظر رو پیمایش می کنند اضافه میکنه تا با کلیک بعدی در فریم 10 و 15 و 20 و ... قرار بگیره در کلید دوم هم به همین صورت.
فایل ضمیمه هم گذاشتم که دوستان به صورت گرافیکی بهتر متوجه بشن
 

پیوست ها

  • currentFrame++.zip
    20.3 کیلوبایت · بازدیدها: 1

aminzamani68

New Member
اما روش آقا هادی مدیریت بیشتری بر روی حرکت بین فریم ها داره به این صورت که مجبور به فقط حرکت یک تعداد فریم خاص نیستید و می توانید یک بار 5 فریم و یک بار 20 فریم را پیمایش کنید.

آقا هادی عزیز شما زحمت کشیدید کد رو نوشت و گذاشتید اما به نظرم لازمه یه توضیح در مورد این خط بدید

PHP:
num=(num+1<ary.length)?num+1:0;

یه قسمت هایشو متوجه نمیشم، میشه یه توضیح کامل در مورد این خط کد بدید و برام تفصیرش کنید؟ :idea:
بازم از آقا جواد و آقا هادی ممنونم.
 
آخرین ویرایش:
سلام.راهی رو که من پیشنهاد دادم کارایی نداشت.چون به فلش دسترسی نداشتم ،تئوری گفتم ولی وقتی با فلش پیاده سازی کردم کلی مشکل داشت.به هر حال ببخشید.

اما در مورد کد.این کد از عملگر شرطی ? استفاده می کنه.من بیشتر توی کدهای جاواسکریپت دیدم استفاده شده این عملگر به این صورت به کار میره:
[PHPS]condition ? value1 : value2;[/PHPS]
condition یک عبارت شرطی هست که اگر true باشه value1 ، و اگر false باشه value2 برگردانده میشه
 

aminzamani68

New Member
ممنون آقا جواد بله تفصیر خوبی بود متوجه شدم
مثل مثال زیر که نوشتم

PHP:
var a:int = 10;
var b:int = 11;

(a>b)? trace("1") : trace("2");
در خروجی 2 چاپ میشه چون عبارت شرطی صحیح نیست،مرسی :oops:
 

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

بالا