台灣最大程式設計社群網站
線上人數
1854
 
會員總數:246213
討論主題:189782
歡迎您免費加入會員
討論區列表 >> CSS/HTML5/Bootstarp >> 請問這題 點菜~~@@
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問這題 點菜~~@@
價值 : 70 QP  點閱數:1271 回應數:11
樓主

遠仔
門外漢
0 82
1372 260
發送站內信

Order

大大們請問...
1.OrderEvent.as裡的public static const ORDER_DISHES:String='點菜' & super(ORDER_DISHES)
這二行CODE的用意在哪啊@@?WHY要這樣寫呢?

2.OrderEvent.as裡why要做function set dishes & function get dishe呢?
3.Waiter.as裡的e.target.name,target是指Customer?是因為Customer.as裡dispatchEvent(orderDish)的關係嗎?

4.Customer.as裡dispatchEvent(orderDish),是否也為觸發SampleOrderDishes.as裡偵聽事件
kingda.addEventListener(OrderEvent.ORDER_DISHES,xiangyuanWaiter.replyOrderFood);
的CODE呢?

大大們麻煩了~~0.0

本篇文章發表於2012-06-28 19:58
1樓
回應

香帥
檢舉此回應
ORDER_DISHES:String='點菜'
ans: 是一個字串常數
super(ORDER_DISHES)
ans: 係呼叫父類的建構函數,並傳入ORDER_DISHES
OrderEvent.as裡why要做function set dishes & function get dishe呢?
ans:因為要存取 dishes 屬性值
Waiter.as裡的e.target.name,target是指Customer?是因為Customer.as裡dispatchEvent(orderDish)的關係嗎?
ans:
e.target.name 您在檔案裡有問為何不用 e.name ,因為e.name不是它的屬性值
只有e.currentTarget.name 或 e.target.name 這兩個去判斷
以下程式碼比較清楚,您可以想成一個戰爭遊戲,戰場A裡面有多個敵人目標B,C,D...,您滑鼠按一下,表示開槍,
當當敵人B出現時,您滑處點過去,若點到,e.target.name 就是 B,若沒點到(亦即點到戰場上),e.target.name 就是 A
當當敵人C出現時,您滑處點過去,若點到,e.target.name 就是 C,若沒點到(亦即點到戰場上),e.target.name 就是 A
D以後的敵人以此類推,以下程式碼 main_mc 就是戰場代表A
main_mc.addEventListener(MouseEvent.CLICK, eventFun);這行就表示它在處理滑鼠事件,因此e.currentTarget.name 就是 main_mc(簡稱A)
有空去實作一下,就會知道,sensor1就是被擊中的的人e.target.name(簡稱B,C,D...)
sensor2 就是戰場e.currentTarget.name (即main_mc 簡稱 A)





Customer.as裡dispatchEvent(orderDish),是否也為觸發SampleOrderDishes.as裡偵聽事件
ans:是為了要派送自訂事件,若無派送,就無法偵聽,除非是內定事件,像上面程式碼的滑鼠事件的MouseEvent.CLICK,是內定的,就不必派送


本篇文章回覆於2012-06-28 23:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

遠仔
檢舉此回應
帥大請問..
為何這題裡的function set dishes 和 function get dishe必須二者並存呢?
要存取 dishes 屬性值為何要二者都用到呢?
本篇文章回覆於2012-07-02 15:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

遠仔
檢舉此回應
再請問一下@@
Customer.as中的
var orderDish:OrderEvent=new OrderEvent();
orderDish.dishes=['剁椒魚頭','家小炒肉','神仙豆腐'];
請問orderDish是OrderEvent實例,WHY能夠以陣列的方式(orderDish.dishes)來加入元素呢@@?
本篇文章回覆於2012-07-02 16:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

遠仔
檢舉此回應
帥大拍謝,再請教...>"<, 在Waiter.as中
trace('你好,'+e.target.name+'! 你點的菜是: \r'+e.dishes);
裡的e是指Customer 或 kingda 或是 OrderEvent呢?
e.target.name的e感覺是指kinda,而target是指Customer(因為kingda是Customer的實例)
但e.dishes的e又像是指OrderEvent
怎麼同一個e,會顯示不同地方的內容哩?
本篇文章回覆於2012-07-02 20:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

香帥
檢舉此回應
2#我在一樓也有回答阿
要存取 dishes 屬性值為何要二者都用到呢? 因為存set ,取 get ,這在其他語言物件也經常用到這兩者呀,您要單獨變成唯讀也可以啦,並不一定要兩者同時存在,就像有些物件屬性質不允許更改.
to 3#
接收事件的函數內,您要傳入整數,字串,陣列...都隨設計者意思,陣列當然可以
to 4#
我在一樓有說 e.target.name 會隨發生事件的物件變動,就像滑鼠打中誰,並不固定
但在您的例子是kingda顧客(Customer)呀,因為產生訂菜事件的物件就是某個顧客,您的例子剛好只有一個,當然是kingda
若是遊戲中有很多顧客,那e.target.name就是顧客之其中一人,就不一定是 kingda

本篇文章回覆於2012-07-02 23:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

遠仔
檢舉此回應
喔喔,原來如此~~
那如果我要再加一個客戶的話,要怎麼做呢?
我加了4行CODE,但是每次執行時都只出現固定的客戶名稱,照理說應該是每次名稱都隨機麼?


還有您給我的那題戰爭範例,不管我怎麼點,target和currentTarget永遠都是main_mc哩,怎會這樣?
WAR
本篇文章回覆於2012-07-03 16:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
最有價值解答

香帥
檢舉此回應
to 6#
kingda2 那四行若放前面,會先 kingda2在來才是kingda
那四行若放後面,會先 kingda在來才是kingda2
因為您程式裡並沒隨機,按照您的程式行依序執行
本篇文章回覆於2012-07-04 23:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

遠仔
檢舉此回應
恩恩,3Q~~^^
本篇文章回覆於2012-07-04 23:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

香帥
檢舉此回應
剛試好久,您的war檔無法下載,來幫您測
請至我的server下載完整範例,不過是要用cs5.5版才打得開
http://ap.a168a.com/test/event_v55.fla
本篇文章回覆於2012-07-05 00:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

遠仔
檢舉此回應
感恩,小弟再PO一次連結,如果還是不行也沒關係
只是忽然想多加一個客人試試看~~^.^
本篇文章回覆於2012-07-09 15:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

遠仔
檢舉此回應
點菜
本篇文章回覆於2012-07-09 15:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.