2013年10月31日 星期四

Module:製作屬於自己的模組2

剛開始寫Corona SDK的程式時,常會用require匯入別人寫的程式碼。如果我們想要寫出自己的模組的話,要怎麼做呢? 上篇文章中,已經提到建立模組基本的概念。之前提到模組這個東西,就是會回傳一些什麼東西。這篇文章裡,要用兩個範例來說明如何建立自己的模組。
(如果要看英文的話,我是看這個短片學到的:http://youtu.be/9pdi7gfAmQ8)

**********************************************************
請看第一個範例:














首先先建立一個檔案,假設是 moduleA 好了,
如果這就是我們即將要引入的 module 重點是,要
1. 建立一個空的表格
2. localfunction塞到這個表格裡
3. 回傳這個表格。

**********************************************************
再看另外一個例子,這次是moduleB,也是同樣的處理方式。












**********************************************************
使用的時候,
1.require我們之前寫的模組
2.以上圖的方式調用module裡面的方法。





回到 魏巍的Corona SDK百科全書

2013年10月26日 星期六

Module:製作屬於自己的模組1

剛開始寫Corona SDK的程式時,常會用require匯入別人寫的程式碼。如果我們想要寫出自己的模組的話,要怎麼做呢? 請看下面的文章。

首先在我的文件新增一個資料夾,命名為 ModuleExample1
如下,接著在資料夾裡分別新增main.lua檔案和example1.lua檔案。
寫下如下的程式碼,執行過後在終端機看到結果。




上面的例子裡,example1.lua是被匯入的Module
通常這樣被匯入的檔案,都是會回傳些「什麼東西」。
example1.lua在程式碼的第六行回傳的是一個名叫t的、空的table
而在main.lua的第三行匯入example1的時候,
程式就先跳到example1.lua開始執行匯入,
印出example1.lua has been loaded、最後回傳t
main.lua裡,用變數ex1接住回傳的table
最後用第四行的程式碼,幫這個回傳的table加入新的屬性textVar
textVar的值是 Hello World字串。

---------------------------------------
接著請在main.lua裡面繼續打上下列的程式碼,
並在ModuleExample1的資料夾裡新增scene1.lua檔案,
scene1.lua檔案裡,寫下下圖的程式碼,
執行過後看到結果。

 
main.lua的第六行匯入scene1,開始執行scene1.lua的程式碼。
scene1.lua在第二行再度匯入example1,用變數example1接住回傳值
然後在scene1.lua的第三行印出這個回傳值的testVar變數。
結果我們看到終端機上example1.lua has been loaded並沒有因為又在scene1.lua再度匯入而再多印一次,而居然印出了,我們在main.lua第四行加入的字串Hello World

這是什麼原因呢?
這是因為程式引入Module的時候,如果曾經引入的話,就會紀錄在程式裡package.loaded的地方。即使是重複引入,都還只是會引入一次。再度引入時,程式只會在package.loaded的地方找到原來引入的程式碼來做進一步的處理。

因為這樣,所以第一次在main.lua第三行匯入example1,就印出了example1.lua has been loaded、把回傳的table存到main.lua的變數ex1、並且把這個table存在package.loaded的地方。

main.lua第四行加入新的屬性textVar的時候,不僅main.lua裡面的ex1增加了這樣的屬性、同時package.loaded裡面的table也新加了相同的屬性。

scene1.lua引入了example1.lua時,由於之前程式已經匯入過了,所以不會重新匯入,所以不會再度印出example1.lua has been loaded;由於程式已經匯入過了,所以這時回傳的值,其實是package.loaded裡面的table,於是scene1.lua第三行印出example1.textVar時,會印出Hello World

下篇文章會再談到更多和模組相關的事情。


回到 魏巍的CORONA SDK百科全書

2013年10月23日 星期三

Button:偵測按鈕長按 (continuous touch)

依據不同程式的要求,有時會想做出,可以長按的按鈕。

要做出這樣的按鈕的話,原理很簡單:
1.先把按鈕圖加上觸控事件監聽器。
2.按下按鈕的話,事件的狀態是「began
3.放開按鈕的話,事件的狀態是「ended
依據這些設定,去判斷是否長按了按鈕。
詳細的程式碼於下:




















執行結果



















回到 魏巍的 CORONA SDK 百科全書

2013年10月20日 星期日

利用MovieClip來更換圖片或建立Toggle Button

之前寫書的時候,碰到變換圖片時,會教讀者利用displayGroup來更換圖片。






如上圖,創建一個空的displayGroup之後,先放入圖片。之後要換圖片的話,就把原來的圖片抽出來,塞一張新的圖片進入原來的顯示群組中,完成換圖的目的。這樣的方法雖然很容易理解也真的完成了工作,不過要變換圖片的話,也可以用movieClip來達成目的。

先創建新的movieClip,把要更換的圖放進入。
然後用stopAtFrame來決定要顯示的圖片。
寫成程式碼的話,就如下圖。



利用這樣的方法,除了可以換圖。還可以建立如下圖的Toggle Button



















回到魏巍的CORONA SDK百科全書

2013年10月16日 星期三

Corona Editor 設定

        撰寫Corona SDK的程式常拼錯字造成無法運作?用文字編輯器每次都要完全把程式碼一個字母一個字母打完,覺得超麻煩的嗎?現在Corona SDK有屬於自己的開發環境嚕,請看下面的文章一步一步設定吧!

Step 1. 自己安裝 Sublime Text 這個文字編輯軟體(23應該都可以)
(如果你打Sublime Text的話,會查到很多破解的方法,自己決定要不要受到誘惑。)

Step 2. 下載Package Control Plugin
請到 https://sublime.wbond.net/installation 下載標示的檔案





















Step 3. 把下載的檔案拷貝到Program Files Sublime Text資料夾裡,其中的Packages資料夾
位置應該是電腦裡 Program Files\Sublime Text 3\Packages 這樣的位置

Step 4. 打開Sublime Text,在上方的工具列裡,找到Tool選項。按下去之後,選擇Command Palette… > Package Control: Install Package.























Step 5.之後再選擇 Corona Editor,就會安裝了























Step 6. 安裝後打一下字就會出現提示字樣,以後打錯程式碼的情況應該會大大的減少














Step 7.按右鍵可以直接連結Corona SDK的文件















回到魏巍的Corona SDK百科全書