หน้า: 1 ... 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 ... 31
 
ผู้เขียน หัวข้อ: อนุบาลงาน ActionSctipt  (อ่าน 271414 ครั้ง)
0 สมาชิก และ 1 ขาจร กำลังดูหัวข้อนี้
ความรู้เต็มไปหมดเลยเก็บไม่ทันแล้ว อ้วก
บันทึกการเข้า

"...ถ้าสายตาเราชินกับในที่มืดแล้ว คงยากที่จะเพ่งมองโลกภายนอกได้..."
Key : เช็คการกดปุ่มบนคีย์บอรด และ Listener Event แบบมั่วสุดๆ

KEY บอกตามตรงว่าไม่ค่อยได้ใช้ครับ  ไอ้มืดหมี เพราะงานส่วนมากไม่ค่อยมี ...ไม่เคยได้งานน่ะแหล่ะ ฮือๆ~

เลยเอาตัวอย่างจาก Help ครับ และจะเอามาเพิ่มเติมประยุกต์นิดๆหน่อยๆ

โดยหลักๆ มีแค่ สอง event คือ กด และ ปล่อย ... ฮะๆ ง่าย  ฮิ้ววว

และโดยพิมพ์นิยม เราจะใช้ Listener event มาตรวจจับ

ใครก็ได้ มาอธิบาย Listener ทีครับ ผมยังให้คำจำกัดความของคำสั่งนี้ไม่ได้เลย ( คือไม่รู้น่ะแหล่ะ)
รู้แต่ว่า เป็นการตรวจเช็ค เท่าที่เดาๆได้ คือ มันจะทำงานต่อเมื่อมีำ event นั้นเกิดขึ้น

ผมไม่อายเลยที่จะบอกว่า งานนี้ผมเดา 100% ออกจะมั่วด้วยเพราะไม่ค่อยเข้าใจเท่าไร
จะอธิบายแบบมวยวัดและเท่าที่ผมรู้นะครับ หากผิดพลาดช่วยออกมาชี้แจงกันหน่อยนะครับ จักเป็นพระคุณยิ่ง

โค้ด:
Using event listeners
Event listeners let an object, called a listener object, receive events broadcast by another object, called a broadcaster object.
 The broadcaster object registers the listener object to receive events generated by the broadcaster. For example, you can
register a movie clip object to receive onResize notifications from the Stage, or a button instance could receive onChanged
notifications from a text field object. You can register multiple listener objects to receive events from a single broadcaster,
and you can register a single listener object to receive events from multiple broadcasters.

The listener-broadcaster model for events, unlike event handler methods, lets you have multiple pieces of code listen to the
same event without conflict. Event models that do not use the listener/broadcaster model, such as XML.onLoad(), can be
problematic when various pieces of code are listening to the same event; the different pieces of code have conflicts over
control of that single XML.onLoad callback function reference. With the listener/broadcaster model, you can easily
add listeners to the same event without worrying about code bottlenecks.

ในแฟลชหากเราจะตรวจจับอะไรสักอย่างแบบตลอดเวลา เรามักใช้ EnterFrame กันใช่ไหมครับ นั่นคือการทำงานทุกๆเฟรม
แต่ Listener จะเป็นการทำงานต่อเมื่อ event เกิดขึ้น จะแบบว่า

เมื่อ Object ใดๆที่เราสร้าง Listener ตรวจจับไว้ มีการทำงานตาม Event ที่เราตรวจจับไว้
ไม่ว่าที่ไหน เมื่อไร หาก Object นั้นๆยังอยู่ และยังไม่ลบ Listener event นั้นๆออก
มันก็จะเรียก ฟังชั่นที่เราแหมะไว้กับ Listener Event นั้นๆให้ทำงาน

โอ๊ยยย งง ไหม งงสิ ผมยังงงเลย ดูตัวอย่างละกัน  โวย

 
แอบอ้าง
var keyListener:Object = new Object(); //สร้าง Listener Object มารองรับ
keyListener.onKeyDown = function() { //ใส่ Function เข้าไปใน Event อันนี้คือ กดปุ่มใดๆปั๊ปฟังชั่นนี้ทำงาน และเอามันใส่ไปใน Object "keyListener"
   txt1 = Key.getCode(); // จะให้ทำอะไรก็ว่าไป
   txt2 = Key.getAscii(); // จะให้ทำอะไรก็ว่าไป
};                               //จบฟังชั่น
Key.addListener(keyListener); // ยัดมันเข้าไปใน Key คือสั่งตรวจจับการกดปุ่มไว้ใน Key นั้นๆ


ฮะๆ ไม่รู้เรื่องเลย  ง่ะ อธิบายไม่ถูกแฮะ

จากตัวอย่างสคริปข้างบน พล่ามออกมาได้ว่า ...สมมุตินะ

- keyListener เป็น ยาชนิดหนึ่งที่มีความสามารถ onKeyDown ติดตัวอยู่ และยังลอยอยู่ในอากาศ
และพร้อมจะฉีดให้ใครก็ใด้่ ใครโดนฉีดก็จะมีความสามารถแบบนี้ได้เลย

- กรณีนี้ เราจะเอาความสามารถของ function มันมาให้ปุ่มบนคีย์บอรด

- เราก็เลยจับ keyListener ยัดใส่เข็มฉีดยา ฉีดใส่ KEY ต่างๆบนคีย์บอรด (KEY ครอบคลุมหมดทุกปุ่ม)

- ทีนี้ ปุ่มบนคีย์บอรดก็ใด้ยาชนิดนี้มาเป็นพลังพิเศษ คือมีการตรวจ onKeyDown ได้เลย

คล้ายๆสร้างการตรวจจับไว้ทุกๆปุ่ม แต่่จะมีการตรวจจับจริงๆเมื่อมี Event onKeyDown เกิดขึ้น (อันนี้ล่ะครับผมเดามั่วสุดๆ)


โอ๊ยยย ยิ่งอธิบาย ยิ่งบ้า  ง่ะ

สคริปตัวอย่างข้างบน เป็นสคริปที่เช็ด code กับ ascii บนปุ่มแบง่ายๆ
โดย (รวบรัดล่ะนะ)

เมื่อ Key ใดๆบนคีย์บอรด มีการกดปุ่ม
ให้ดึง key code ของปุ่มนั้นๆแสดงผลที่ txt1 โดยคำสั่ง getCode()
และให้ดึงรหัส ASCII code ของปุ่มนั้นๆแสดงผลที่ txt2 โดยคำสั่ง getAscii()


แอบอ้าง
getCode (Key.getCode method)
public static getCode() : Number

Returns the key code value of the last key pressed.

Note: The Flash Lite implementation of this method returns a string or a number, depending on the key code passed in by the platform. The only valid key codes are the standard key codes accepted by this class and the special key codes listed as properties of the ExtendedKey class.

A Flash application can only monitor keyboard events that occur within its focus. A Flash application cannot detect keyboard events in another application.


getAscii (Key.getAscii method)
public static getAscii() : Number

Returns the ASCII code of the last key pressed or released. The ASCII values returned are English keyboard values. For example, if you press Shift+2, Key.getAscii() returns @ on a Japanese keyboard, which is the same as it does on an English keyboard.

A Flash application can only monitor keyboard events that occur within its focus. A Flash application cannot detect keyboard events in another application.

ตัวอย่างจ๊ะ หากปุ่มใดๆมี shortcut ต่างๆ หรือเป็นคีย์เฉพาะ มันก็ไม่ขึ้นโค้ดนะครับ
เพราะคำสั่งหลักมาก่อนแฟลช(รึเปล่า) เช่นกด PrtSc วินโด่ ก็จะสั่ง printscreen ก่อนครับ (ประมาณนั้น ... วุ๊ย ไม่รู้เรื่องไรสักอย่างเลยตู)
แต่หากเรารู้โค้ดปุ่มนั้นๆ ในส่วนแฟลชเองก็เช็คใด้ครับ มันทำงานครับ ( เดานะคร้าบบบบ )

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

งานนี้มั่วกันเช็ดเม็ดเลย  ง่ะ ผิดพลาดประการใด น้อมรับผิดอย่างแรงๆครับ  ไหว้

ถ้าไม่เข้าใจอย่างไรก็ลองๆอ่านใน Help และลองจากตัวอย่างนะครับ

เดี๋ยวงานหน้ามา กดๆ ปล่อยๆ กันครับ วันนี้แค่นี้ก่อนนะครับ ไอ้นี้ใช้พลังงานในความเข้าใจเยอะมากเลย  ฮือๆ~
« แก้ไขครั้งสุดท้าย: 28 มี.ค. 2008, 01:44 น. โดย ej_sing » บันทึกการเข้า

ผมหามานานแล้วครับ ขอบคุณมากครับพี่  ผมใช้แบบจำรหัสปุ่มแล้วไปสั่งเลย   เขียนโค้ด get ออกมาไม่เป็น

ถ้าได้นี่ไป ผมจิ้มปุ่มไหนก็รุ้เลยนะซิครับว่าปุ่มไหนรหัสว่าไง  แจ่มจริงๆ

ว่าแต่ว่า โน๊ตบุ๊คมันมีรหัสปุ่มไม่เหมือนกันใช่มั้ยครับ  อันนี้ไม่รุ้เลย
บันทึกการเข้า

ล้ำลึกคนึงหาในดวงจิต ใจเคยคิดตัดสวาทมิอาจสิ้น
ดั่งก้านบัวหักกลางชลาสินธุ์ ผิว่าสิ้นไร้เยื่อยังเหลือใย
 ไอ้มืดหมี ไม่เหมือนจริงรึ อันนี้ไม่รู้เลยครับ
บันทึกการเข้า

as3

เวลาผมคลิกที่ button
ผมหาที่ใส่ getURL ไม่เจอครับมันไม่ให้ใส่  ฮือๆ~

ช้าไปหรือเปล่าครับ เหอๆ

ใช้ navigateToURL แทน getURL ครับ

โค้ด:
button.addEventListener(MouseEvent.CLICK, onClick);

function onClick(e:MouseEvent):void{
  navigateToURL(new URLRequest("http://www.f0nt.com"), "_self");
}
บันทึกการเข้า

พี่ก่อออออ  กรี๊ดดดดด เกย์ออก
บันทึกการเข้า
ขอบคุณเรื่อง Key ครับน้าแอ๊ด+
สงสัยว่าอธิบายรอบเดียวจะไม่เข้าใจแน่ๆ เพราะยิ่งอ่านยิ่งงง กร๊าก
ถ้าเป็นไปได้ช่วยสอนแบบมีเวิร์กช็อปประกอบจะเป็นการรบกวนไปไหมครับ ไหว้
บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
เห็นกระทู้นี้เงียบเหงามานาน ก็ปั่นซะหน่อยละกัน คริคริ

มาดูการทำกระดานวาดรูป

**อันนี้ผมเปิดจากหนังสือมานะครับ

คำสั่งหลักๆที่เกี่ยวกับการสร้างเส้น มันจะมี

lineStyle(lineWidth,lineColor,lineAlpha);
ซึ่งจะเป็นตัวกำหนดรูปแบบ และลักษณะของเส้นที่เราจะวาดไป

moveTo(startX,startY);
จะเป็นฟังก์ชั่นเพื่อกำหนดว่า เส้นนั้น จะถูกเริ่มต้นจากตรงไหน

lineTo(lastX,lastY);
หรือ
lineTo(curveX,curveY,lastX,lastY);
จะเป็นตัวบอกว่าเส้นที่จะลากต่อไป นั้นจะไปยังจุดไหน
และถ้าเราใส่ curveX curveY เข้าไป จะทำให้เส้นนั้น โค้งเข้าหาจุด {curveX,curveY} นั้นด้วย


clear();
จะเป็นการลบรูปต่างๆ ที่เราวาดลงไปให้มันหายไป

ตอนนี้ เมื่อเราเข้าใจคำสั่งคร่าวๆแล้ว ก็มาดูตัวอย่างเลย

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

แอบอ้าง
_root.onMouseDown = function(){
   _root.clear(); // เมื่อมีการเริ่มวาดเส้นใหม่ ก็จะทำการลบรูปเก่าทิ้งไป
   isDrawing = true; //เป็นตัวเพื่อไปกำหนดใน onMouseMove ว่าจะให้เกิดเส้นขึ้นมาหรือไม่
   _root.lineStyle(1,0xaaff00,100);// เส้นขนาด 1 px สีเขียวอ่อน ไม่โปร่งใส
   _root.moveTo(_root._xmouse,_root._ymouse);// กำหนดจุดเริ่มต้น ไปยังพิดกัดปัจจุบันของเม้าท์
}
_root.onMouseMove = function(){
   if(isDrawing){
      //_root.lineStyle(1,0xaaff00,100);// สามารถแทรก lineStyle ตรงนี้ได้ ถ้าต้องการเปลี่ยนขนาดเส้น สี หรือ ความโปร่งใส
      _root.lineTo(_root._xmouse,_root._ymouse);// ลากจากจุดล่าสุดไปยังพิกัดใหม่
      updateAfterEvent();// สร้างภาพขึ้นใน Stage ทันที
   }
}
_root.onMouseUp = function(){
   isDrawing = false;//กำหนดเพื่อไม่ให้ทำงานในฟังก์ชั่น onMouseMove
}

ซึ่งถ้าไม่ต้องการให้เวลาปล่อยเม้าท์ แล้วจะกดต่อ ก็ให้เอา _root.clear() ออกไป  ก็จะสามารถวาดต่อเนื่องได้เรื่อยๆ
(ค่อยเอาสคริปนี้ไปแทรกในปุ่มกดก็ได้ แล้วแต่ต้องการ)

ยังไง ถ้าต้องการลองเขียน หรือเอาไปประยุกต์
ก็ลองเอาวิธีการเชกการกดปุ่มของพี่หนึ่ง(ejsing)
มาเพิ่มทำเป็น short key เพื่อเพิ่มขนาดเส้น หรือเปลี่ยนสีก็ได้ครับ

(คำแนะนำเล็กๆน้อยๆ**
ค่าที่จะใส่ใน lineStyle ควรจะเป็นตัวแปร เพื่อง่ายต่อการเขียนโค้ดให้มันเปลี่ยนแปลงได้ง่ายๆ
แล้วเวลากดปุ่มต่างๆ ก็ให้มันเปลี่ยนค่าในตัวแปรเท่านั้นเป็นพอ
)
« แก้ไขครั้งสุดท้าย: 12 เม.ย. 2008, 16:42 น. โดย poloh » บันทึกการเข้า

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ
ตัวอย่างงานประยุกต์

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

ใครว่างๆ ก็ลองทำดูนะครับ

ปล. ยังไง ช่วงหลังสงกราน เดี๋ยวเอาโค้ดตัวนี้ขึ้นให้อีกทีนึง ตอนนี้กั๊กไว้ก่อน
ปล. 7= เส้นสีดำ ,8= เส้นสีขาวนะครับ  อืมมมมห์
« แก้ไขครั้งสุดท้าย: 16 เม.ย. 2008, 16:13 น. โดย poloh » บันทึกการเข้า

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ
กรี๊ดดดดด โอ้วสุดยอด+
บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
สุดๆ  กรี๊ดดดดด +
บันทึกการเข้า

ล้ำลึกคนึงหาในดวงจิต ใจเคยคิดตัดสวาทมิอาจสิ้น
ดั่งก้านบัวหักกลางชลาสินธุ์ ผิว่าสิ้นไร้เยื่อยังเหลือใย
 กรี๊ดดดดด  เจ๋ง

สุดๆครับ
บันทึกการเข้า

อืมมมมห์ มีคนเข้ามาดูด้วยแฮะ

แต่เขียนคำอธิบายสลับกันยังไม่มีคนทักเลย โวย

แต่ไม่เป็นไร เอาโค้ดไปดูแล้วถ้าสงสัยก็ถามมาละกันครับ
« แก้ไขครั้งสุดท้าย: 16 เม.ย. 2008, 15:59 น. โดย poloh » บันทึกการเข้า

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ
อ้าว  เหรอครับ   เม้มมั่วนี่หว่า  แป๊ะยิ้ม


เปล่าหรอกครับ มาดูแค่คอนเสปต์ ก็รุ้แล้วว่ามันสุดยอดเก็บไว้เป็นเสบียง ตอนที่ ต้องการใช้จะได้มาอ่านอีกทีไงครับ  ฮ่า  กรี๊ดดดดด

ว่าแล้วก็บวกอีกรอบ
บันทึกการเข้า

ล้ำลึกคนึงหาในดวงจิต ใจเคยคิดตัดสวาทมิอาจสิ้น
ดั่งก้านบัวหักกลางชลาสินธุ์ ผิว่าสิ้นไร้เยื่อยังเหลือใย
อ้อ ถึงว่าสิแปลกๆ (ทำเนียน ซื่อบื้อ)
บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
หน้า: 1 ... 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 ... 31
 
 
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!