Reply
 
Thread Tools Display Modes   
 
[ask] gimana cara deteksi keyboard input?
 
Old 04/12/2009, 06:48 Reply With Quote   #1
Daggio
Tukang Es Teh
 
Daggio's Avatar
 
Join Date: Jan 2007
Location: Surabaya
Posts: 1,929
Daggio is on a distinguished road
Daggio is offline
[ask] gimana cara deteksi keyboard input?

benere ini pertanyaan soal flex,tapi karna yo masih deket2 sama flash jadi ya gapapa ditaroh disini kan?

gini,ini wa baru pake mouse input di dalam game (Baron), untuk mendeteksi mouse input wa pake cara begini di main.mxml nya

Code:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="600" frameRate="100" creationComplete="creationComplete()" enterFrame="enterFrame(event)" click="click(event)" keyDown="keyDown(event)" mouseDown="mouseDown(event)" mouseUp="mouseUp(event)" mouseMove="mouseMove(event)" currentState="MainMenu"> </mx:Application>
see where it says "mouseDown"? maksudna adalah setiap ada event mouseDown maka function mouseDown(event) yang akan di panggil

Code:
private function mouseDown(event:MouseEvent):void { GameObjectManager.Instance.mouseDown(event); }
jadi klo ada mouseDown dia panggil event mouseDown di game object manager

Code:
public function mouseDown(event:MouseEvent):void { for each (var gameObject:BaseObject in baseObjects) if (gameObject.inuse) gameObject.mouseDown(event); }
disini dia bakal meloop baseObjects dan melihat apakah object masih terpakai (maksud:belum hancur kena peluru),kalo iya maka jalankan function mouseDown(event)

wa ada class Player yang merupakan turunan dari AnimatedGameObject yang merupakan turunan dari GameObject, dan GameObject sendiri adalah anak dari BaseObject (keluarga besar euy )

Code:
override public function mouseDown(event:MouseEvent):void { shooting = true; }
di Player di override karena di BaseObject memang ada function2 yang tujuannya untuk di override oleh turunanna


code buat mouse input ini jalan dengan lancar,gak ada kendala sama sekali.Cuman waktu wa mo implementasi hal yg sama buat keyboard input...key input gak kebaca (strange, I know....)

jadi...sekalian aja wa kasi liat flow buat key input.Di atas tadi (mxml) kalian lihat bahwa untuk keyDown event yang di jalankan adalah keyDown(event)

Code:
private function keyDown(event:KeyboardEvent):void { GameObjectManager.Instance.keyDown(event); }
di game object manager

Code:
public function keyDown(event:KeyboardEvent):void { for each (var gameObject:BaseObject in baseObjects) if (gameObject.inuse) gameObject.keyDown(event); }
di Player

Code:
override public function keyDown(event:KeyboardEvent):void { if(event.keyCode == 80) GameObjectManager.Instance.paused = !GameObjectManager.Instance.paused }
nah, baris kode di dalam keyDown di class Player itulah yg ga jalan,entah kenapa.
masalahna bukan di keyCode == 80 karena wa udah nyoba buat menghilangkan conditional if tapi tetep aja baris itu gak jalan
dan waktu wa coba pasang itu baris di function mouseDown codena berhasil, game ter paused

wa udah coba pake even listener (ato event handler ya?) dari referensi wa (ebook) tapi tetep waktu wa coba ga jalan itu key input,padahal waktu wa bikin aplikasi terpisah key input terbaca dengan sukses
jadi masalahna bener2 ada di cara wa handle key input,tolong donk mastah2 disini kasi muridmu ini pencerahan gimana cara handle key input yang benar
__________________
moe moe~ kyun! XD
   
 
 
Old 04/12/2009, 10:21 Reply With Quote   #2
alijaya
GDI Power Users
 
alijaya's Avatar
 
Join Date: Dec 2007
Location: Pangkalpinang
Posts: 3,279
alijaya is on a distinguished road
Send a message via Yahoo to alijaya alijaya is offline
Hmmm...
Kok pake mxml? Napa gk langsung?
Udah dicoba di brute trace lom?
Di setiap baris coba di trace apa kek, jadi tau kodenya berenti dimana.
Udah dicoba dimainin di flash player debugger?
Biasanya ada error gk keliatan kalo dr browser.
Biasanya referensi objek yang udah null, gk tau juga seg.
Mendingan di trace dulu.
__________________
tobat ngejunk. tobat nyepam. tobat bikin yang gak bener. tobat kasih komen gak jelas. tobat buang-buang ikon. tobat jadi orang jelek. tobat maen komputer sambil belajar. tobat banget kalo ngomong gak bertanggung jawab. tobat banget untuk kesalahan laennya.
"siapa yang mau ikut2an tobat??"
blog : http://alijaya.wordpress.com/, http://bothaxe.wordpress.com/
   
 
 
Old 04/12/2009, 16:41 Reply With Quote   #3
Daggio
Tukang Es Teh
 
Daggio's Avatar
 
Join Date: Jan 2007
Location: Surabaya
Posts: 1,929
Daggio is on a distinguished road
Daggio is offline
ya wa ngetesna kan pake flash player debugger li
emang klo ada null object reference pasti ketauan,cuman ini gak keluar itu error null object reference
trus udah wa trace juga (maksudna panggil trace() kan?) tpi tetep gak keluar apa2
__________________
moe moe~ kyun! XD
   
 
 
Old 04/12/2009, 16:44 Reply With Quote   #4
alijaya
GDI Power Users
 
alijaya's Avatar
 
Join Date: Dec 2007
Location: Pangkalpinang
Posts: 3,279
alijaya is on a distinguished road
Send a message via Yahoo to alijaya alijaya is offline
@om dag: iya di tebarin trace na... setiap baris di sisipin pake trace...
jadi nanti keliatan pas dibaris mana tracenya ilank...
__________________
tobat ngejunk. tobat nyepam. tobat bikin yang gak bener. tobat kasih komen gak jelas. tobat buang-buang ikon. tobat jadi orang jelek. tobat maen komputer sambil belajar. tobat banget kalo ngomong gak bertanggung jawab. tobat banget untuk kesalahan laennya.
"siapa yang mau ikut2an tobat??"
blog : http://alijaya.wordpress.com/, http://bothaxe.wordpress.com/
   
 
 
Old 04/12/2009, 18:40 Reply With Quote   #5
TurnA
GDI Power Users
 
TurnA's Avatar
 
Join Date: Aug 2004
Location: Jakarta
Posts: 532
TurnA is on a distinguished road
TurnA is offline
Oh, ada yang pake shell Flex buat game

Hmm, Player itu extend BaseObject ya?
Seperti yang dibilang Alijaya, coba kasih trace di GameObjectManager, diantara baris2 di function ini

for each (var gameObject:BaseObject in baseObjects)
{
trace("1")
if (gameObject.inuse)
{
trace("2");
gameObject.keyDown(event);
}
}

Aku rada curiga kalo GameObject-nya gak terload disitu (walo kurang pasti karena mesti liat code keseluruhan sih )
__________________
Who said mecha can't do monkey dance???
   
 
 
Old 04/12/2009, 19:16 Reply With Quote   #6
alijaya
GDI Power Users
 
alijaya's Avatar
 
Join Date: Dec 2007
Location: Pangkalpinang
Posts: 3,279
alijaya is on a distinguished road
Send a message via Yahoo to alijaya alijaya is offline
ahhh kayakna aku tau *kayaknya lho
coba yang di kasih listenernya di root.stage nya...
kalo di suatu sprite harusnya diklik dulu supaya fokus baru bisa ke listen event nya ama sprite ntuh.
__________________
tobat ngejunk. tobat nyepam. tobat bikin yang gak bener. tobat kasih komen gak jelas. tobat buang-buang ikon. tobat jadi orang jelek. tobat maen komputer sambil belajar. tobat banget kalo ngomong gak bertanggung jawab. tobat banget untuk kesalahan laennya.
"siapa yang mau ikut2an tobat??"
blog : http://alijaya.wordpress.com/, http://bothaxe.wordpress.com/
   
 
 
Old 04/12/2009, 19:25 Reply With Quote   #7
Daggio
Tukang Es Teh
 
Daggio's Avatar
 
Join Date: Jan 2007
Location: Surabaya
Posts: 1,929
Daggio is on a distinguished road
Daggio is offline
@om turnA: dicoba om

@ali: root.stage? dimananya itu? (ga pernah tau >_< )
__________________
moe moe~ kyun! XD
   
 
 
Old 05/12/2009, 10:10 Reply With Quote   #8
alijaya
GDI Power Users
 
alijaya's Avatar
 
Join Date: Dec 2007
Location: Pangkalpinang
Posts: 3,279
alijaya is on a distinguished road
Send a message via Yahoo to alijaya alijaya is offline
@om dag: root ntuh display object paling atas, gk tau klo di flex gmana ngakses na.
Trus stiap display object pasti ada stage na.
__________________
tobat ngejunk. tobat nyepam. tobat bikin yang gak bener. tobat kasih komen gak jelas. tobat buang-buang ikon. tobat jadi orang jelek. tobat maen komputer sambil belajar. tobat banget kalo ngomong gak bertanggung jawab. tobat banget untuk kesalahan laennya.
"siapa yang mau ikut2an tobat??"
blog : http://alijaya.wordpress.com/, http://bothaxe.wordpress.com/
   
 
 
Old 06/12/2009, 13:12 Reply With Quote   #9
Daggio
Tukang Es Teh
 
Daggio's Avatar
 
Join Date: Jan 2007
Location: Surabaya
Posts: 1,929
Daggio is on a distinguished road
Daggio is offline
masalah udah beres,caranya wa hapus elemen keyDown di tag <mx:Application> dan coba di trap pake event listener
cara ini berhasil

makasih buat ali ama om turnA yg dah ngebantu
__________________
moe moe~ kyun! XD
   
   Reply   


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off


All times are GMT +7. The time now is 01:21.


skin developed by: uray
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.