move_object.py以做修正,它不應該含有gtk ui部份,我希望它可以在畫圖區可以一直產生,若含有ui這樣是不對的,當然這邏輯很棒,每一隻都是一個執行續,擁有自己的生命行為,
我到可讓隻飛碟行徑路線,生命都不一樣,一般人可能只會想到用一個thread讓每隻動起來,這樣邏輯不好,而且程式複雜化了.
目前,每按一次按鈕,就會在frame隨機位置,隨機產生3種飛碟中之一種,每隻飛碟速度都不同,按停止扭,會一隻一隻的清空,我是每隻一一,用空白圖來清空
move_list_signal.py用來存放,每隻飛碟的list,到時每隻飛碟信號應該會這模組建立,有點像界面,做溝通用的,
說真的,這樣的邏輯思考,已經算滿神奇的,在來看一下,更神奇的信號處理,我如何讓飛碟飛碟一直增加,又能每隻飛碟能讓信號傳回主程式
下面START方法,按產生飛碟,就會建立一個move_object物件(就是一台亂跑的飛碟),用self把本身整個傳給每一隻建立的move_object物件,那move_object接收
這參數,就可使用RECEVER發法,又把自己self回傳給主程式,主程式可接收move_object所有東西
#接收移動動畫信號,print印出每隻檔案名(測試用沒什意義,到時還要完成)
def RECEVER(self,move_object):
print(move_object.get_name())
def START(self, widget, *event):
if bt_active_label=='產生飛碟':
...............................................................
move_obj=move_object.move_object(self,self.framme1,self.darea,p)
...............................................................
在來看move_object如何送信號過來,self.main_obj就是接收了主程式self,SEND_MOVE_SIGNAL方法呼叫了主程式中的RECEVER,然後move_object自帶的thread
會一直呼叫self.move_object.SEND_MOVE_SIGNAL(),終端機就看到每隻飛碟的3種飛碟檔名一直被印出來了,很神奇吧!!這樣就可用來做碰撞判斷用,其實我還試著想有沒有什方法
直接就可把飛碟信號傳給每隻飛碟,這樣的或應該就是超神的了,只想到透過類似界面,這界面會存放所有飛碟,主程式接受到每隻飛碟傳過來信號,逐一用for來傳這,
就是我在建立move_list_signal.py的原因,執行畫畫面就像下圖一樣,然後這是目前的程式源碼下載,有需要可拿去參考,只是無聊愛亂玩程式,哈哈哈
class move_object():
#建構式,用來初始化物件
def __init__(self,main_obj,frame,darea,image_path):
self.main_obj=main_obj
..........................................................
#初始化thread,把自己當參數,傳給thread,用來製照動畫,並啟動它
self.thread = MyThread(self) ...........................................
def SEND_MOVE_SIGNAL(self):
self.main_obj.RECEVER(self)
class MyThread(Thread):
def __init__(self,move_obj):
super(MyThread,self).__init__()
self.move_object=move_obj
..........................
def run(self):#執行續,執行的地方
print("執行續啟動")
while self.is_move:
......................................
self.move_object.SEND_MOVE_SIGNAL()
.....................................
2015年2月15日 星期日
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言