2013年11月26日 星期二

新的動畫設定 Elastic系列和 Bounce系列


你知道嗎?新版的Corona SDK在做動畫的時候,設定的部分多了一些變化。我覺得這些多出來的效果很重要,Cocos2D本來就有提供這些效果,所以從Cocos2D轉到Corona SDK的時候,很想念這些動畫設定。現在終於在Corona SDK也出現了這些效果,大家要好好地使用啊!
新的設定包括了 continuousLoopinSineoutSineinOutSineoutInSineinCubicoutCubicinOutCubicoutInCubicinQuintoutQuintinOutQuintoutInQuintinCircoutCircinOutCircoutInCircinBackoutBackinOutBackoutInBack…等等。不過最吸引我的,是inElastic系列和inBounce系列。
inElasticoutElasticinOutElastic,和outInElastic系列可以做出好像橡皮筋一樣的動畫,好像Angry Bird或是很多用Cocos2D做出來的遊戲,都可以看到這樣有彈性的按鈕動畫,這是非常重要的一個新增功能。
inBounceoutBounceinOutBounceoutInBounce系列可以做出彈跳的動畫,我覺得這個也很酷,希望大家用用看。

使用方式:配合transition.to指令,在transition設定的地方。把新的參數帶進去。

transition.to(object,{time=600,x=20,transition=easing.outBounce});

以上,繼續用Corona SDK做出好玩的遊戲和應用程式吧!



相關連結
****************************************************
所有做動畫的設定 [頁面連結]
給一般人的Corona SDK教學書 [頁面連結]

Graphics 2.0問答集 [頁面連結]

回到 魏巍的CORONA SDK百科全書

2013年11月15日 星期五

Graphics 2.0:Graphics 2.0 問答集

2013年11月15號 Corona SDK正式改版,推出Graphics 2.0。很多讀者跑來問我,說他們的程式跑不動了,該怎麼辦?我其實才剛下載新版的Corona SDK,還沒有安裝。不過我看到網上有一些文章,說不定已經可以解決大家的問題。於是我把原來英文的問答集翻成中文,大家參考一下吧?

問題1.原來的程式碼在Graphics2.0還可以跑嗎?
可以,要在config.lua裡加入一行程式碼:



加入這行後,99%的程式碼可以相容。

問題2.Graphics 2.0和之前的程式碼可以混用嗎?
並沒有這樣的限制,不過不推薦把新舊程式碼混在一起。

問題3.新的Graphics 2.0有什麼變化呢?
*建立顯示物件時,是以物件的x,y點為中心,而不是像之前的設定上方或左方的距離。
*不能用display.setReferencePoint了,請用 object.anchorX object.anchorY代替
*不能用display.newGradient 了,請用object.fill = table 代替
*本來RGBA的顏色是0255,現在改成01
*不能用object:setTextColor 了,請用object:setFillColorobject.fill = value代替
*不能用line:setColor了,請用line:setStrokeColor代替
*不能用line.width了, 請用line.strokeWidth代替
*不能用xReference, yReference, xOrigin yOrigin了,請用 anchorXanchorY代替
*群組預設沒有anchor points。要設定“group.anchorChildren = true” 才能使用

4.能夠一直用第一點的方法,寫入graphicsCompatibility = 1,就可以支援舊的程式碼了嗎?
答案是否定的。某一天會完全使用Graphics 2.0?

以上草草翻譯,歡迎大家提供進一步改正意見,

未來持續更新Corona SDK關於Graphics 2.0的文章

回到 魏巍的CORONA SDK百科全書

2013年11月4日 星期一

Button:建立好的按鈕,想要換圖的作法

前幾天讀者問我,已經建立好的按鈕可不可以換圖。
我回答說可以,但是對方還是不清楚怎麼做到所需的效果,
於是我就寫了下面一段程式碼給他,現在也分享給大家。



和之前建立按鈕一樣,先在第三行引入ui.lua
程式碼1927行是建立一個新的按鈕,
程式碼26行設定按下按鈕後要執行changeButton、也就是617行的程式碼。
由於用ui.lua產生出來的按鈕其實是一個顯示群組,
所以910行,把這個顯示群組的圖拿掉,

接著1115行加入新按鈕圖,就可以達到換圖的效果了。


回到 魏巍的CORONA SDK 百科全書

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百科全書