Step 1 : 將副檔名 apk 轉為 zip
Step 2 : assets/application.swf
Step 3 : 利用 SoThink 反組譯 application.swf 查看原始碼
設定並安裝手機驅動 ( 缺檔案 )
Step 0 : 手機連接上電腦
Step 1 : 手機上「設定」勾選「開啟開發人員選項」
Step 2 : 手機上「設定」勾選「USB 除錯中」
Step 3 : 安裝驅動 ( HTC Driver/Driver Files/Vista_x86 )
Step 4 : > cmd >
1. 開啟執行 [Win]+[R] 並輸入 cmd ( 命令提示字元 )
2. cd (解壓縮目錄)\android_sdk\sdk\platform-tools
3. adb
4. adb devices
※ 若無法成功時
adb kill-server
adb
※ 豌豆筴
-> 找手機 Driver
-> 破解軟體
Bitmapdata 截圖
import flash.events.MouseEvent;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.display.MovieClip;
import flash.geom.Rectangle;
mask_mc.addEventListener(MouseEvent.MOUSE_DOWN,OnMouseDown);
stage.addEventListener(MouseEvent.MOUSE_UP,OnMouseUp);
function OnMouseDown(evt:MouseEvent)
{
mask_mc.startDrag(false,new Rectangle(source_mc.x,source_mc.y,source_mc.width-mask_mc.width,source_mc.height-mask_mc.height));
}
function OnMouseUp(evt:MouseEvent)
{
mask_mc.stopDrag();
getThumbnail();
}
function getThumbnail()
{
var nX:Number = source_mc.x - mask_mc.x;
var nY:Number = source_mc.y - mask_mc.y;
var pt:Point = new Point(mask_mc.x,mask_mc.y);
pt = source_mc.globalToLocal(pt);
var nW:Number = mask_mc.width;
var nH:Number = mask_mc.height;
var rect:Rectangle = new Rectangle(pt.x,pt.y,nW,nH);
var bitmapdata:BitmapData = new BitmapData(nW,nH);
var bitmapdataSource:BitmapData=new BitmapData(source_mc.width,source_mc.height);
bitmapdataSource.draw(source_mc);
bitmapdata.copyPixels(bitmapdataSource, rect, new Point(0, 0));
if (getChildByName("bmp") != null)
{
removeChild(getChildByName("bmp"));
}
var bitmap:Bitmap = new Bitmap(bitmapdata);
bitmap.name = "bmp";
bitmap.x = source_mc.x + source_mc.width;
bitmap.y = source_mc.y + source_mc.height - bitmap.height;
this.addChild(bitmap);
}
參考資料
關於 XML(一)使用 Flash 載入 XML 資料
var verLoader:URLLoader = new URLLoader(new URLRequest("version.xml")); verLoader.addEventListener(Event.COMPLETE,OnComplete); function OnComplete() { var verXML:XML = new XML(verLoader.data); trace(verXML); } var articleXML:XML = new XML(articleLoader.data); var i:Number=0; while(articleXML.article[i]) { articles[i]=new Object(); articles[i].aid=articleXML.article[i].aid; articles[i].photo=articleXML.article[i].photo; articles[i].title=articleXML.article[i].title; articles[i].description=articleXML.article[i].description; i++; }
自定義附帶傳送參數事件
建構事件
package
{
import flash.events.Event;
public class MuseumEvent extends Event
{
public static const CHANGE_ROOM:String = "CHANGE_ROOM";
public var data:Object;
public function MuseumEvent(_type:String, _bubble:Boolean = false , _object:Object = null)
{
super(_type, _bubble, false);
data = _object;
}
}
}
使用事件
// 收
this.addEventListener(MuseumEvent.CHANGE_ROOM,OnChangeRoom);
// 發
dispatchEvent(new MuseumEvent(MuseumEvent.CHANGE_ROOM,true,{room:"LOBBY"}));
// 執行
function OnChangeRoom(evt:MuseumEvent){trace(evt.data.zoom);}
3dsmax 拆 UV ( 方形物體 )
Step 1: 建好一個模並且加好材質
Step 3 :
Selection Modes > Face Sub-object Mode
Step 4 :
選取整個目標
Step 5 :
Mapping > Normal Mapping
Step 6 :
選擇 Box Mapping > OK
Step 7 :
File > Save UVs
Step 8 :
命名之後儲存
Step 9 :
關掉 Edit UVWs 視窗
Step 10 :
選擇 Load…
Step 11 :
選擇剛剛儲存的 uvw 檔, 開啟
Step 12 :
開啟 Render To Texture 視窗 ( 快速鍵 0 )
Step 13 :
- Selected Element Common Setting > File Name and Type 檔名隨便, 副檔名設成 png 或 jpg
- 圖片大小設成 512 x 512
- 按下 Render
Step 14 :
出現錯誤時選擇 Continue
Step 15 :
算完圖後先將視窗關掉
Step 16 :
回到 Modify > Automatic Flatten UVs > Load
Step 17 :
選擇剛剛儲存的 uvw 檔, 開啟
Step 18 :
開啟 Render To Texture 視窗 ( 快速鍵 0 )
Step 19 :
直接按下 Render, 結果應該會像左邊那張圖一樣
切換成 Alpha Channel 看起來會像右邊那張圖一樣
Step 20 :
按下 Save Image
Step 21 :
存檔類型選擇 *.png
Step 22 :
選擇 RGB 24 bit > 按下 OK
Step 23 :
編輯剛剛存的 png 檔完後儲存覆蓋原本的 png 檔
Step 24 :
回到 3dsmax 開啟材質球 ( 快速鍵 : M )
Step 25 :
選擇一顆空白的材質球 > 按下 Diffuse 旁邊的小框框
Step 26 :
選擇第一個 Bitmap 按下 OK
Step 27 :
選擇剛剛畫好的材質按下「開啟」
Step 28 :
將材質球拉到物件上 > 再按下 Show Standard Map in View Port
Step 29 :
算一張圖來看看 ( 快速鍵 F9 )
Kinect for AS3 錯誤說明
[ 1 ] Question :error on accept<> for data, exit data thread. 10093
[ 1 ] Solution :
關閉重複開啟的 as3-server.exe
—————————————————————————————————————
Arduino – 可動式電阻
int potPin = 0; // 宣告類比腳位輸入的PIN腳
int val = 0; // 宣告變數Val = 0
void setup() {
Serial.begin(9600); //設定SerialPort的速度9600 = 9600bit/s
}
void loop() {
val = analogRead(potPin); // 用analogRead()這個函式讀取特定腳位的數值到變數val
Serial.print("Val : "); //印出數值在Serial.Monitor
Serial.print(val);
Serial.print("\n");
delay(150); //延遲讀入的時間為150ms
}
所讀到的最大值與最小值
通訊錄編輯小訣竅
步驟一:將 vCard 檔案會進 google 通訊錄裡
步驟二:將 google 通訊錄匯出成 csv 檔
步驟三:用 excel 開啟下載的 csv 檔即可進行處理
步驟四:處理完之後再次上傳或更新通訊錄
使用 DataGrid
建立一個 DataGrid
import fl.controls.dataGridClasses.DataGridColumn;
//------------------------------------------------------------| 宣告欄位的名稱
var ID:DataGridColumn = new DataGridColumn("ID");
var time:DataGridColumn = new DataGridColumn("time");
var captionAb:DataGridColumn = new DataGridColumn("captionAb");
var captionCh:DataGridColumn = new DataGridColumn("captionCh");
//------------------------------------------------------------| 更改欄位的標籤
ID.headerText = "ID";
time.headerText = "時間";
captionAb.headerText = "原文";
captionCh.headerText = "中文";
//------------------------------------------------------------| 設定欄位的寬度
ID.width = 40;
time.width = 40;
captionAb.width = 250;
captionCh.width = 150;
//------------------------------------------------------------| 設定排序方式
ID.sortOptions = Array.NUMERIC;
//------------------------------------------------------------| 將欄位指定給 DtaGrid
var dgCols:Array = [ID, time,captionAb,captionCh];
caption_dg.columns = dgCols;
//------------------------------------------------------------| 新增資料
caption_dg.addItem(
{
ID:i+1,
time:CaptionInfo.captions_time[i],
captionAb:CaptionInfo.captions_captionAb[i],
captionCh:CaptionInfo.captions_captionCh[i]
});
常用的事件
項目點選時
fl.events.ListEvent.ITEM_CLICK
項目變更時
flash.events.Event.CHANGE