หน้า: [1] 2
 
ผู้เขียน หัวข้อ: ถ้าไม่ใช่เฟรมนี้ กระทำ...  (อ่าน 8377 ครั้ง)
0 สมาชิก และ 1 ขาจร กำลังดูหัวข้อนี้
ผมอยากตั้ง if ที่เช็คว่าถ้าใน MC ไม่ใช่เฟรมที่  3 แล้วให้กระทำการต่างๆ จะใช้คำสั่งอะไรครับ

และอีกอันคือ ถ้า MC play ยังไม่ถึงเฟรมสุดท้ายให้กระทำการ......

ควรใช้คำสั่งอะไรดีครับ

ขอบคุณครับ
บันทึกการเข้า

นักเขียนการ์ตูนรายปี
if ( MC._currentframe != 3 ){


}



//**********************

if( MC._currentframe <  MC._totalframes ){


}



//******************
_currentframe เฟรมปัจจุบัน

_totalframes จำนวนเฟรมทั้งหมด

บันทึกการเข้า

ขอบคุณมากครับ
บันทึกการเข้า

นักเขียนการ์ตูนรายปี
ถามต่อสักนิดครับ พอดีผมเขียนโค้ดสั่ง RollOver RollOut ง่ายๆมาชุดนึงก็ใช้งานไดดี แต่พอจะลองลดรูปให้เป็น fuction มันไม่ได้ผลครับ ไม่รู้พลาดตรงไหน


<a href="http://img2.f0nt.com/flash/1d817d087f66b89ceaa035b8aec98b1a.swf" target="_blank">http://img2.f0nt.com/flash/1d817d087f66b89ceaa035b8aec98b1a.swf</a>

โค้ด:
function McIn(mmc) {
mmc.onEnterFrame = function() {
mmc.nextFrame();
};
}

b1.onRollOver = function() {
service.onEnterFrame = function() {
service.nextFrame();
};
};
b1.onRollOut = function() {
service.onEnterFrame = function() {
service.prevFrame();
};
};
b2.onRollOver = McIn(service2);
บันทึกการเข้า

นักเขียนการ์ตูนรายปี
เหมือนปุ่ม เลย  กรี๊ดดดดด
บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
ไม่สามารถทำแบบนั้นได้ครับ  อยากทราบเหตุผล ถามอีกรอบครับ เผื่อไม่อยากอ่านยาว   ปลื้ม

โค้ด:
function McIn() {
     this.mmc.onEnterFrame = function() {
        this.nextFrame();
    };
}


b2.mmc = service2;
b2.onRollOver = McIn;

แบบนี้ทำได้ครับ ลองอ่านโค้ดดู



function McIn() {
     this.mmc.onEnterFrame = function() {   //<----- this ตรงนี้หมายถึงที่ปุ่มมีตัวแปร mmc อยู่
        this.nextFrame();   //<----- this ตรงนี้หมายถึงตัว mmc เพราะ function oี้ทำงานที่ตัว mmc
    };
}
« แก้ไขครั้งสุดท้าย: 08 ม.ค. 2007, 13:44 น. โดย heart » บันทึกการเข้า

ได้แล้วครับ  เข้าได้แต่ออกไม่ได้  ฮือๆ~ มันคงไม่ใช่แค่เพิ่มชุดคำสั่งเลียนแบบแหงๆเลย  (เหงื่อแตกพลั่ก)
<a href="http://img2.f0nt.com/flash/178ea7b0a658cac0c9ee76fefc774464.swf" target="_blank">http://img2.f0nt.com/flash/178ea7b0a658cac0c9ee76fefc774464.swf</a>
โค้ด:
function McIn() {
this.mmc.onEnterFrame = function() {
this.nextFrame();
};
}
function McOut() {
this.mmc.onEnterFrame = function() {
this.prevFrame();
};
}
b2.mmc = service2;
b2.onRollOver = McIn;
b2.onRollOut = McOut;



อยากรู้เหตุผลครับ ขอบคุณมากครับ  ยิ้มน่ารัก

นิดนึงครับ การสั่งแบบนี้แปลว่าถ้าเอาเมาส์มาแตะ มันจะเป็น nextFrame() ไปเรื่อยๆ แม้ว่ามันจะถึงเฟรมสุดท้ายแล้วก็ตามใช่มั้ยครับ? อย่างนี้มันจะมีปํญหากับ memory หรือเปล่า หรือว่าผมคิดมากเกินไป
« แก้ไขครั้งสุดท้าย: 08 ม.ค. 2007, 14:56 น. โดย Layiji » บันทึกการเข้า

นักเขียนการ์ตูนรายปี
ถูกต้อง มันมีปัญหากับการทำงานโดยไม่จำเป็นแน่นอน

(ลองใส่ trace ลงไปดู ถึงว่า่จะทำงานไปสุดแล้ว แต่มันก็ยัง trace ออกมา)

โค้ด:
function McIn() {
this.mmc.onEnterFrame = function() {
this.nextFrame();
if(this._currentframe == this._totalframes){
delete this.onEnterFrame;
}
};
}
function McOut() {
this.mmc.onEnterFrame = function() {
this.prevFrame();
if(this._currentframe == 1){
delete this.onEnterFrame;
}
};
}
b2.mmc = service2;
b2.onRollOver = McIn;
b2.onRollOut = McOut;

ลองนี่ดูครับ 

ตอนเล่นเฟรมกลับสคริปที่เขียนมามันทำงานได้ครับ ไม่แน่ใจว่าทำไม ที่มห้ดูมันถึงไม่กลับ
บันทึกการเข้า

โอ้ได้แล้วครับ คุณฮาร์ตนี่แม่นจริงๆ

ขอบคุณที่เสียเวลาครับ จะไปหาอ่านเรื่อง this ใหม่ครับ เรียงลำดับไม่ค่อยถูก
บันทึกการเข้า

นักเขียนการ์ตูนรายปี
โอ้ว สาระเยี่ยมมาก มีประโยชน์ๆ (แจ๋ว แจ๋ว)

(+2) ทั้งคู่ครับ
บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
สาเหตุว่า ทำไม
 
b2.onRollOver = McIn(service2);


ไม่ได้


ก็เพราะว่ามันจะมองเป็น

b2.onRollOver = การใช้งานฟังชั่น McIn โดยส่งค่าไปเป็น service2

แต่ถ้า

b2.onRollOver = McIn

มันจะมองว่า  onRollOver  ชี้ไปที่ McIn
ซึ่ง McIn มีความหมายเป็นฟังชั่น
บันทึกการเข้า

จากตรงนี้ผมลองเป็น

b1.onPress = getURL("http://www.hotmail.com");

มันจะไม่ได้

แต่ถ้าไปที่ ปุ่ม แล้วเป็น

on (Press) {
getURL("http://www.hotmail.com");
}

มันถึงจะได้
ถ้าอย่างนั้นวิธีการ grtURL ใน timeline หลัก เราต้องทำเป็น function ให้เรียกใช้เหรอครับ
บันทึกการเข้า

นักเขียนการ์ตูนรายปี

function toURL(){
   getURL(this.url);
}

b1.url = "http://www.hotmail.com";
b1.onRelease = toURL;






« แก้ไขครั้งสุดท้าย: 08 ม.ค. 2007, 18:13 น. โดย Layiji » บันทึกการเข้า

function toURL(){
   getURL(this.url);
}

b1.url = "http://www.hotmail.com";
b1.onRelease = toURL;

ขอบคุณมากครับ
ที่ผมกำลังงมๆแล้วก็เลิกทำไปเป็นอย่างนี้ครับ

function toURL(){
   getURL(url); 
}

b1.url = "http://www.hotmail.com";
b1.onRelease = toURL;



แอบอ้าง

สับสนกับการใช้ this จริงๆครับ   อี๋~
« แก้ไขครั้งสุดท้าย: 08 ม.ค. 2007, 18:19 น. โดย Layiji » บันทึกการเข้า

นักเขียนการ์ตูนรายปี
this คือ ที่นี่


function a(){

  trace(this);

}

ถ้า
a();
คำว่า this จะหมายถึง จุดที่เราเขียนฟังชั่นลงไป อาจจะหมายถึง _root ถ้าเราเขียนบน _root


ถ้า


btn.onRelease = a;

แล้ว

this จะหมายถึง btn เำพราะว่ามันเหมือนว่าฟังชั่นนี้ทำงานบน btn

แอบอ้าง
function toURL(){
   getURL(url);
}

b1.url = "http://www.hotmail.com";
b1.onRelease = toURL;

จากโค้ดนี้ getURL(url);  จะต้องเปลี่ยนเป็น getURL(this.url);
เพราะว่าถ้า url เฉยๆจะหายถึง url ที่อยู่ ณ.จุดที่เขียนฟังชั่นลงไป  แต่ถ้า this.url จะหมายถึง  ฟังชั่นนี้ไปรันอยู่บน  b1  มันจะหมายถึงตัวแปร url ของ b1
บันทึกการเข้า

หน้า: [1] 2
 
 
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines | Thai language by ThaiSMF Valid XHTML 1.0! Valid CSS!