อนุบาลงาน ActionSctipt

เริ่มโพสต์โดย ej_sing, 10 พ.ย. 2007, 00:44 น.

0 สมาชิก และ 1 บุคคลทั่วไป กำลังเปิดอ่านโพสต์นี้

iannnnn

อ้างคำพูดจาก: lnwส์ เมื่อ 25 ก.พ. 2008, 15:53 น.
ใช้ทำการอันใดครับ ? :25:

ลองไปค้นมา น่ารักดี :30:

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/transitions/Tween.html#yoyo()

เหมือนสั่งให้ทำงาน พอสุดแล้วเด้งย้อนกลับมั้งครับ :25:


ขา...จอห์น[23]

โอ้ว ขอบคุณมากครับ :33:

กำลังงมอยู่... :01:
ก้าวแรกที่พลาดพลั้ง คือก้าวหลังที่มั่นใจ ก้าวแรกที่เสียไป คือก้าวใหม่ที่ได้มา...

I’Boss

지금은 소ë...€ì‹œëŒ€ , 앞으로ë,, 소ë...€ì‹œëŒ€ , 영원히 소ë...€ì‹œëŒ€

poloh

#184
เผอิญเพื่อนมาถามให้ช่วยเขียนโค้ดให้ประมาณนี้
เลยทำมาประมาณนี้ ให้เพื่อนไป

http://img2.f0nt.com/flash/35c1e83bb880ee4b42a56f24a111e9bd.swf

ส่วนข้างล่างนี่ คือโค้ดที่ใช้ทั้งหมดครับ

mcRotate.onPress = function(){
startrotate = 1;
}
mcRotate.onRelease = mcRotate.onRollOut = mcRotate.onReleaseOutside = function(){
startrotate = 0;
}
mcRotate.onEnterFrame = function(){
if(startrotate == 1){
xVal = this._x - _xmouse;
yVal = _ymouse -this._y;
rotate =(Math.atan2(xVal, yVal)-1.5) * 60;
rotate = rotate % 360;
if(rotate < 0){
rotate += 360;
}
if((rotate >0 && rotate<180)){
mcRotate._rotation = rotate;
}
}else{
if(mcRotate._rotation > 0){
mcRotate._rotation -=2;
}
}
}


ตัวนี้ เพื่อนบอกมาว่า จะให้หมุนได้แค่ 180 องศาบน พอปล่อยเมาท์ ก็ให้มันหมุนกลับมาน่ะครับ

ซึ่งตัวนี้ ที่ผมใช้หลักๆ คือ ช่วงที่กด กับช่วงที่ปล่อย
แล้วก็ใช้ onEnterFrame ในการให้มันทำ animation ตลอดเวลาที่แสดงผลอยู่

แล้วก็
xVal = this._x - _xmouse;
yVal = _ymouse -this._y;
rotate =(Math.atan2(xVal, yVal)-1.5) * 60;
rotate = rotate % 360;
if(rotate < 0){
rotate += 360;
}

เป็นโค้ดที่ทำให้เราหาได้ว่า ตอนนี้ เม้าท์เรา ทำองศาเท่าไร กับตัว movie clip นั้นอยู่
หลักๆ ก็ประมาณนี้น่ะครับ

ปล. อาจจะมีโค้ดที่ง่ายกว่านี้นะครับในการหาองศา แต่เนื่องจากไม่มีเวลา เลยต้องมานั่งบู้ + มั่วเอาจนได้มา
ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ

ej_sing

เยี่ยมครับ

แต่น่าจะใช้วิธี พอปล่อยปุ่ม ลบเอนเตอร์เฟรมเลย
แล้วเอาค่าสุดท้ายให้ lmc_tween เป็นตัวส่งกลับ (หมุนกัลบไปตำแหน่งเดิม)

เดี๋ยวทำมาแบบง่ายๆ พอเป็นแนวทางอีกแบบครับ
แป๊ปนึง

poloh

อ่อ ครับผม ขอบคุณครับ ลืมคิดไปเลย เรื่องลบ enterFrame

ความจริง ยังมีอีกหลายตัว ที่ได้เขียนเอาไว้
ไว้จะเอามาให้พี่ดูอีกทีครับ เพื่องานหน้า จะได้ทำให้ดีขึ้น :52:

ตอนนี้แค่ปั่นงาน ก็หมดเวลาไปหลายละ ไม่กล้าแก้ เดี๋ยวไม่ทันส่ง :41:
ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ

ej_sing

#187
แบบนี้ก็เยี่ยมแล้วครับ มาช่วยกันโพสนะครับ เอากรณีใช้จริงนี่ล่ะ เจ๋งนักแล


เป็นแนวทางอีกแบบครับ อันนี้ไม่เหมือนกันนะครับ ไม่ได้กั้นไว้ 180 องศา
หมุนรอบ แล้ววิ่งกลับ เวลาวิ่งกลับมันจะเลือกทางที่ใกล้ที่สุด  :22: เอาไว้ ประยุกต์ต่อ (ไปลองงมกันดู)

http://img2.f0nt.com/flash/38bc5da94243ec0b7957c00b3982d7d3.swf

อ้างอิง
stop();
#include "lmc_tween.as"
chk = new Boolean(false);
_mc.onPress = function() {
   chk = true;
   rotate_me();
};
_mc.onRelease= _mc.onReleaseOutside =function(){;
chk=false;
rotate_me();
_mc.tween("_rotation",0,2);
};
function rotate_me() {
if (_root.chk) {
   _mc.onEnterFrame = function() {
      rdn = Math.atan2((_root._ymouse-_root._mc._y), (_root._xmouse-_root._mc._x)); //บรรทัดนี้ หาค่าตำแหน่งค่ามุมเม้าส์
      _root._mc._rotation = rdn*180/Math.PI+180; //แปลงเป็นองศา ส่งกลับไปหมุน
   };
} else {
   delete _mc.onEnterFrame;
}
}


// อย่าหวังว่าผมจะคิดสูตรเองนะครับ :22: เอามาจากหนังสือน่ะ คิดสูตรแบบนี้ คิดเองคิดทั้งปีก็ไม่ออก  :30:

แจกด้วยจ้า เอาไปเลย เป็น FL8 แล้ว

ขา...จอห์น[23]

อุอุ ดูดๆ อย่างเดียวครับ แซบหลาย :04:
ก้าวแรกที่พลาดพลั้ง คือก้าวหลังที่มั่นใจ ก้าวแรกที่เสียไป คือก้าวใหม่ที่ได้มา...

ej_sing

อ่ะ เต็มที่เลยครับพี่น้อง  :39:

จากโค้ดด้านบน ที่ดึงค่า radian ของเม้าส์ เอามาแปลงเป็นองศา แล้วหมุน

อ้างอิง
rdn = Math.atan2((_root._ymouse-_root._mc._y), (_root._xmouse-_root._mc._x)); //บรรทัดนี้ หาค่าตำแหน่งค่ามุมเม้าส์
      _root._mc._rotation = rdn*180/Math.PI+180; //แปลงเป็นองศา ส่งกลับไปหมุน


ตัวอย่างการประยุกต์
เอาง่ายๆเลยอันนี้

คลิก แล้วตามมานะ หันหน้ามาด้วย  :22:

http://img2.f0nt.com/flash/63362828c0f6815a422cc53105cbb074.swf

อ้างอิง
stop();
#include "lmc_tween.as"
n=1
var someListener:Object = new Object();
someListener.onMouseDown = function () {
   rdn = Math.atan2((_root._ymouse-_root._mc._y), (_root._xmouse-_root._mc._x));
      _mc.tween("_rotation",rdn*180/Math.PI+90,0.5) //***
      _mc.tween("_y",_ymouse,3)
      _mc.tween("_x",_xmouse,3)
                point()
   };
Mouse.addListener(someListener);
function point(){
   pt._x = _xmouse
   pt._y = _ymouse
   pt.gotoAndPlay(1)
}


ส่วนสีแดงนั่น ให้ดูจุด pivot เริ่มต้น ของ mc ครับ หาก ตั้งตรงก็ 90  หันซ้ายก็ 180

ลองทำดูนะครับ

ไม่แจกครับ     :37:








อ่ะล้อเล่น  :21:

iannnnn

:14: เป๋แล้ว นี่ไม่อนุบาลแล้วนะครับ

ej_sing

 :05: ขอโต๊ดดด
แก้ตัวงานหน้านะ  :05:

หยุยย~*

 :46: ขอบคุณมากค่ะ มีอะไรสนุกๆมาให้ศึกษาตลอดเลย :40:

คนตาบอดข้างเดียว

ในหมู่คนตาบอด คนตาบอดข้างเดียวได้เป็นราชา

NaIGaMPonG

   
   สวัสดีครับ หลังจากไล่อ่านกระทู้นี้มาตั้งหลายวัน  :05:
   
   ได้ความรู้เพิ่มอีกหลายอย่างเลยเกี่ยวกับการเขียน AS

   ตัวผมเองก็พอจะเคยเขียนมาบ้างแต่ก็ไ่ม่ได้เก่งเท่าไหร่
   
   ขอบคุณ คุณน๊าแอ๊ดที่ตั้งใจเขียนบทเรียนดีๆ แบบนี้ให้ชาวฟอนต์ได้อ่านกันนะครับ  :12:
   
   จะติดตามต่อไป ถ้าเกิดมีอะไรที่พอจะทราบจะขออนุญาติร่วมด้วยคนนะครับ
 
   ฝากเนื้อฝากตัวด้วยครับผม  :42:
์NY Together

SMF 2.1.7 © 2026, Simple Machines