去年我跟阿漢剛開始在玩120老相機,因為是老相機,所以沒有測光的功能,完全機械式的,於是阿漢就上網找了以前攝影用的測光表,雖然不像現在電子式的測光表這麼方便,但是這些iso對應的光圈快門數據,可都是先人智慧的結晶,的確都很準確,而且紙本又輕又不用電池,攜帶也方便,以下是阿漢做給我的紙本LightMeter(被我帶去爬玉山下雨弄濕了,都皺了XD)。
這是一個套桶式的紙本測光表,外層有天氣狀況可供選擇以及光圈值,底下(裡面)有一張iso值跟快門速度的紙可以左右拉動,iso值對應天氣狀況,就可以算出光圈跟快門值的數據該如何搭配,很簡單使用的一個好東西,但是自從我買了Desire之後,就一直有個想把這個測光表做成App的想法,於是就買了一本Android的書回家K,有些陣子又比較忙,就又放著沒看,一直到這幾個月adobe發佈了cs5.5可以用flash發佈成Android App,這個想法才又燃起了希望,昨天就馬上實做看看,果然用最熟悉的ActionScript還是最方便的,只有簡單拖拉的功能,馬上就能做出來了,原始碼如下。
package qoo
{
import flash.desktop.NativeApplication;
import flash.events.Event;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.TouchEvent;
import flash.geom.Rectangle;
import flash.net.navigateToURL;
import flash.net.URLRequest;
import flash.text.engine.TypographicCase;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
/**
* ...
* @author ...Geometry Qoo
*/
public class Main extends Sprite
{
private var bottom:Bottom;
private var top:Top;
private var closeBtn:CloseBtn;
private var geoLogo:GeoLogo;
private var titleLogo:Logo;
public function Main():void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
//stage.addEventListener(Event.DEACTIVATE, deactivate);
// touch or gesture?
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
//mask
var maskBox:Sprite = new Sprite();
maskBox.graphics.beginFill(0xffffff);
maskBox.graphics.drawRect(120, 234, 610, 92);
titleLogo = new Logo();
titleLogo.x = 270;
titleLogo.y = 10;
addChild(titleLogo);
//關閉程式
closeBtn = new CloseBtn();
closeBtn.x = 760;
closeBtn.y = 10;
addChild(closeBtn);
//logo
geoLogo = new GeoLogo();
geoLogo.x = 330;
geoLogo.y = 400;
addChild(geoLogo);
//天氣EV對應表
top = new Top();
addChild(top);
top.x = 25;
top.y = 60;
//iso & 快門值
bottom = new Bottom();
addChild(bottom);
bottom.x = 70;
bottom.y = 175;
addChild(maskBox);
bottom.mask = maskBox;
//將要做移動的物件設定成bitmap
bottom.cacheAsBitmap = true;
stage.addEventListener(TouchEvent.TOUCH_BEGIN, beginHandler);
closeBtn.addEventListener(TouchEvent.TOUCH_BEGIN, closeHandler);
geoLogo.addEventListener(TouchEvent.TOUCH_BEGIN, logoHandler);
}
//連結至公司blog
private function logoHandler(e:TouchEvent):void
{
navigateToURL(new URLRequest("http://blog.geometry.com.tw/"), "_blank");
}
//關閉程式
private function closeHandler(e:TouchEvent):void
{
NativeApplication.nativeApplication.exit();
}
//觸控開始
private function beginHandler(e:TouchEvent):void
{
stage.addEventListener(TouchEvent.TOUCH_MOVE, moveHandler);
stage.addEventListener(TouchEvent.TOUCH_END, endHandler);
}
//移動
private function moveHandler(e:TouchEvent):void
{
//trace("X:" + bottom.x);
bottom.startDrag(false, new Rectangle(-480, 175, 944, 0));
}
//結束
private function endHandler(e:TouchEvent):void
{
stage.removeEventListener(TouchEvent.TOUCH_MOVE, moveHandler);
stage.removeEventListener(TouchEvent.TOUCH_END, endHandler);
bottom.stopDrag();
}
private function deactivate(e:Event):void
{
// auto-close
NativeApplication.nativeApplication.exit();
}
}
}
最終完成的APP畫面,跟紙本一樣,可以左右拖曳ISO值對應光圈與快門數據,雖然不像iphone那些神奇又好用的lightMeter APP,但是這個我個人覺得很好用,也很適合跟我的老相機搭配使用^^
想請問版主是用甚麼程式(模擬)去撰寫!?
回覆刪除我稍微有用過Eclipse寫過些小程式
最近也在搜尋適當的測光程式!!!
我是用Adobe的AIR發佈的...我也嘗試過用java開發,但是礙於熟悉度的關係,使用ActionScript開發,對我來說是最快速也最簡便的^^
刪除我剛剛在MARKET有找到此程式
回覆刪除不過我的手機LEGEND 似乎無法安裝!!
因為是跑AIR_runtime,而且AIR有硬體限制,我有試過有的可以裝,比較早期的手機就沒支援,我的手機是Desire,Android2.3系統...
刪除