2013-06-23
NetworkInfo 在 iOS 上並不支援
測試一個想法, 試了幾次, 發現在 NetworkInfo.networkInfo.findInterfaces() 時當掉, 才找到這篇 Getting iPad or Android device MAC address doesn't work。 NetworkInfo.isSupported 在 iOS 上得到 false, 殘念, 得不到 IP 位址。
2013-06-20
免費的 Puzzle 24 lite 上架
Puzzle 24 的免費版 Puzzle 24 Lite 上架了, 請看 Puzzle 24 Lite。
限制是只能存自製的兩個拼圖, 其它功能就都一樣。
原本想放廣告的(其實已經放了),但是由於某個原因所以廣告是看不到的,請安心服用 XD。
Adobe Gaming SDK 裡有幾個 iOS ANE(真是佛心來著,還附範例檔),其中最簡單應該就是 iAd 的 StageBannerAd,Puzzle 24 Lite 用的就是這個。但是 App 的分類如果是 for kids 就殘念了:
Note: iAd policy does not allow for rich media ads in apps designed for children.
就是踩到這個地雷,只能怪自己沒做好功課 :'(。
限制是只能存自製的兩個拼圖, 其它功能就都一樣。
原本想放廣告的(其實已經放了),但是由於某個原因所以廣告是看不到的,請安心服用 XD。
Adobe Gaming SDK 裡有幾個 iOS ANE(真是佛心來著,還附範例檔),其中最簡單應該就是 iAd 的 StageBannerAd,Puzzle 24 Lite 用的就是這個。但是 App 的分類如果是 for kids 就殘念了:
Note: iAd policy does not allow for rich media ads in apps designed for children.
就是踩到這個地雷,只能怪自己沒做好功課 :'(。
2013-06-07
dispose 時該做些什麼
參考 Starling 論壇: question on dispose()
override public function dispose():void
{
//dispose bitmapData
bitmapData.dispose();
//dispose other object witch need
aStar.dispose();
//set var to null, I read it was useless now, but it can t be bad..
myObject = null;
//remove all your listener
removeEventListener(EnterFrame, onEnterFrame);
//removeChild big layer to help GC to get faster
removeChild(layer);
//stop any timer, object, video, connection, nstream etc...
timer.stop();
//unregister from object if you use this
unregisterFrom(objectListen);
//call manually the gc if it's a big big object in memory.
//You also can call the gc in the method witch call the object.dispose();
System.gc();
//call super.dispose()
super.dispose();
}
Starling 效能小記
做一個小遊戲的時候遇到生成大地圖的效能問題,用 FarLog 檢視,在 iPad2 各部份花費的時間如下:
0192 ms: 用 Flash MovieClip 拼地圖,未顯示出來,約1200 小片,2000px*2000px。
0031 ms: 建立 BitmapData 物件,尺寸 2000px*2000px,下同。
0094 ms: BitmapData 物件 draw Flash MovieClip。
2974 ms: 由 BitmapData 物件建立 Texture 物件。
0001 ms: 由 Texture 物件建立 Image 物件。
顯然 Texture.fromBitmapData( bitmapData ) 是效能的瓶頸。
後記一: 用 小 Texture 做成 Image 再拼成地圖,建立的全部時間為 356 ms,好很多。But... 執行時地圖要跟著捲動,捲動時效能變得很差。
後記二: Texture.fromBitmapData() 第二個參數 generateMipMaps 設為 false 時,花費時間為原來的 1/10 ~ 1/9,快相當多。MipMaps 有它的好處但大部份時是用不上的。
0192 ms: 用 Flash MovieClip 拼地圖,未顯示出來,約1200 小片,2000px*2000px。
0031 ms: 建立 BitmapData 物件,尺寸 2000px*2000px,下同。
0094 ms: BitmapData 物件 draw Flash MovieClip。
2974 ms: 由 BitmapData 物件建立 Texture 物件。
0001 ms: 由 Texture 物件建立 Image 物件。
顯然 Texture.fromBitmapData( bitmapData ) 是效能的瓶頸。
後記一: 用 小 Texture 做成 Image 再拼成地圖,建立的全部時間為 356 ms,好很多。But... 執行時地圖要跟著捲動,捲動時效能變得很差。
後記二: Texture.fromBitmapData() 第二個參數 generateMipMaps 設為 false 時,花費時間為原來的 1/10 ~ 1/9,快相當多。MipMaps 有它的好處但大部份時是用不上的。
遠端除錯 FarLog 修正
FarLog 修正,主要是讓訊息可以依照時間排序。舊文章: AIR for iOS 實機測試時的遠端除錯 FarLog
PHP 簡單三個檔: index.php (顯示), log.php (接收) 和 clear.php (清除)。log.php 接收資料記錄到文字檔裡,由 index.php 顯示文字檔內容。
log.php
index.php
clear.php
AS 的部份使用 lin.shinder.utils.FarLog 類別的 log() 靜態方法,沒有變更動。
PHP 簡單三個檔: index.php (顯示), log.php (接收) 和 clear.php (清除)。log.php 接收資料記錄到文字檔裡,由 index.php 顯示文字檔內容。
log.php
<?php
if(isset($_REQUEST['log'])) {
$fp = fopen('log.txt', 'a+');
fwrite($fp, $_REQUEST['log'] . "\n");
fclose($fp);
}
index.php
<?php
$filename = 'log.txt';
$fp = @fopen($filename, 'r'); // Open the file
if ($fp) {
// Add each line to an array
$array = explode("\n", fread($fp, filesize($filename)));
// assoc array
foreach($array as $v) {
$ar = explode(' : ', $v );
$assoc_ar[$ar[0]] = $ar[1];
}
echo '<meta charset="UTF-8"><pre>';
ksort($assoc_ar, SORT_NUMERIC); // sort
foreach($assoc_ar as $k=>$v) {
echo $k . ' -> ' . $v . "\n";
}
echo '</pre>';
}
clear.php
<?php
unlink('log.txt');
AS 的部份使用 lin.shinder.utils.FarLog 類別的 log() 靜態方法,沒有變更動。
2013-06-06
iOS launch images
iOS launch images: 參考 Adobe 線上說明文件。
File name | Image size | Usage |
---|---|---|
Default.png | 320 x 480 | iPhone, standard resolution |
Default@2x.png | 640 x 960 | iPhone, high resolution |
Default-568h@2x.png | 640 x 1136 | iPhone, high resolution, 16:9 aspect ratio |
Default-Portrait.png | 768 x 1004 (AIR 3.3 and earlier) 768 x 1024 (AIR 3.4 and higher) |
iPad, portrait orientation |
Default-Portrait@2x.png | 1536 x 2008 (AIR 3.3 and earlier) 1536 x 2048 (AIR 3.4 and higher) |
iPad, high resolution, portrait orientation |
Default-PortraitUpsideDown.png | 768 x 1004 (AIR 3.3 and earlier)768 x 1024 (AIR 3.4 and higher) | iPad, upside down portrait orientation |
Default-PortraitUpsideDown@2x.png | 1536 x 2008 (AIR 3.3 and earlier)1536 x 2048 (AIR 3.4 and higher) | iPad, high resolution, upside down portrait orientation |
Default-Landscape.png | 1024 x 768 | iPad, left landscape orientation |
Default-LandscapeLeft@2x.png | 2048 x 1536 | iPad, high resolution, left landscape orientation |
Default-LandscapeRight.png | 1024 x 768 | iPad, right landscape orientation |
Default-LandscapeRight@2x.png | 2048 x 1536 | iPad, high resolution, right landscape orientation |
Default-example.png | 320 x 480 | example:// URL on standard iPhone |
Default-example@2x.png | 640 x 960 | example:// URL on high-resolution iPhone |
Default-example~ipad.png | 768 x 1004 | example:// URL on iPad in portrait orientations |
Default-example-Landscape.png | 1024 x 768 | example:// URL on iPad in landscape orientations |
2013-06-05
Puzzle 24 在 iTunes App Store 上架了
之前寫的一些小 App 大都是在 Android 上自己玩玩, 沒有上架問題,"Puzzle 24" 是個人第一個上架的 iOS App(喂~ 慢了別人三年以上,淚)。
玩法是要放在正確的位置上才算完成一個拼圖片,可以從相片裡的照片製作個人拼圖。單一拼圖玩的時間有刷新記錄時,會儲存起了。
為什麼定價為美金 2 元?覺得第一支 App 一定要定個合理的價格,不考慮銷售情況。(另一個原因是免費 App 放廣告也不是不用時間成本,懶)。
"Puzzle 24" 使用 Flash CS6 / AIR 3.8 / Starling / Feathers 開發,效能上不盡人意,主要有兩處。一是載入照片時,在 iPhone 5 上還好;iPhones 4S上有些慢;iPad2 上很快,因為照片尺寸較小。二是建立拼圖時,iPhones 4S上可以感覺到慢, iPhone 5 和 iPad2 還好。實機測試就上述的三台,iPad2、iPhone 4S 和 iPhone 5。在 iPad2 上,螢幕夠大,效果最好。
2013-06-01
Feathers components 的字型
Feathers :UI components for Starling Framework
看它的 Demo 感覺滿不錯的,但試玩就處處碰壁。
首先,themes 並不包含在 feathers.swc 裡,必須另外設定 themes 的路徑。themes 和 demo 的原始碼都有包含在下載包裡。
第二,使用某個 theme 時 ( 相信你大概只會想使用 MetalWorksMobileTheme ),在 PC 上測試由於 DeviceCapabilities.dpi 只有 72,字會變得很小,可以改成 326 ( http://forum.starling-framework.org/topic/xscreendpi-and-web-applications-without-air )。
第三,使用某個 theme 之後,components 的字型、大小是不能在建立 components 後更改的,而必須使用繼承的方式設定 ( http://wiki.starling-framework.org/feathers/extending-themes )。
看它的 Demo 感覺滿不錯的,但試玩就處處碰壁。
首先,themes 並不包含在 feathers.swc 裡,必須另外設定 themes 的路徑。themes 和 demo 的原始碼都有包含在下載包裡。
第二,使用某個 theme 時 ( 相信你大概只會想使用 MetalWorksMobileTheme ),在 PC 上測試由於 DeviceCapabilities.dpi 只有 72,字會變得很小,可以改成 326 ( http://forum.starling-framework.org/topic/xscreendpi-and-web-applications-without-air )。
第三,使用某個 theme 之後,components 的字型、大小是不能在建立 components 後更改的,而必須使用繼承的方式設定 ( http://wiki.starling-framework.org/feathers/extending-themes )。
AS3 Vector 的用法
AS3 的 Array 和 Vector 用法相近,主要是在讀取元素時的效能差異。
Vector 的宣告方式:
宣告並建立物件 (初始化):
宣告並建立物件 (保留 10 個元素參照的位置):
宣告、建立並指定元素值 (兩種做法):
Array 和 Vector 在變動長度的操作時, 如 pop()、push() 和 splice() 效能都不是很好,儘量避免。照道理講設定元素值時 ( push() 或 = 設定 ),Vector 會作類型確認,速度應該比 Array 差一點。但讀取時,Vector 元素都是同一類型,讀取後無需再做型別轉換,效能就會比 Array 好一點。
Vector 的宣告方式:
var 變數名:Vector.<類型>;
宣告並建立物件 (初始化):
var 變數名:Vector.<類型> = new Vector.<類型>();
宣告並建立物件 (保留 10 個元素參照的位置):
var 變數名:Vector.<類型> = new Vector.<類型>(10);
宣告、建立並指定元素值 (兩種做法):
var v2:Vector.<String> = new <String>['shinder', 'qop', 'vector']; // 常用
var v1:Vector.<String> = Vector.<String>(['shinder', 'qop', 'vector']);
Array 和 Vector 在變動長度的操作時, 如 pop()、push() 和 splice() 效能都不是很好,儘量避免。照道理講設定元素值時 ( push() 或 = 設定 ),Vector 會作類型確認,速度應該比 Array 差一點。但讀取時,Vector 元素都是同一類型,讀取後無需再做型別轉換,效能就會比 Array 好一點。
訂閱:
文章 (Atom)