星期六, 3月 20, 2010

FlashDevelop的編碼預設應該不是UTF8的

想改的話就是:
tools -> Programming settings ->
Default CodePage :UTF8
Fallback CodePage :UTF8 (這個很重要,不然看起來會變亂碼)

Flex 4 的Connect to Data 問題

最近似乎都會發現奇怪的鬼問題

我其中一個專案竟然不能用Connect to Data/Service (PHP)
Google了一下也沒看到有什麼解決方法

後來自己的解決方法是
在另外一個專案Connect to Data

然後在專案資料夾下找
.model\XXX.fml (假設專案名稱是XXX)
裡面有service的資料,選一下複製過去

.project
裡面有link的資料,也選一下複製過去

src\services\YYY (YYY是service名稱)
這是自動生成的ValueObject檔案,
整個複製到一樣的地方

記得都別用notepad開,排版會亂掉

FlashDevelop的版型

最近突然覺得FlashDevelop一開始的Title資訊不夠多
要怎麼改呢?

開啟設定資料夾: Tools -> Application Files
Templates -> AS3.fdt

裡面就可以改版型了!
變數的部分在: Tools -> Custom Arguments 裡面增加

Tweener vs Tweenlite(TweenMax)

一直以來再做補間動畫都是用Tweener的
這幾天接觸了Tweenlite(TweenMax),覺得它真是方便多了

看到的資料都說,Tweener是補間動畫中比較強大的一種
強大之處的部份,我是沒有很了解
不過呢,就這幾天用下來的感覺,Tweenlite比較人性化一些

就基本的補間動畫來說,Tweenlite有提供to和from兩個方法
分別是
從目前狀態到哪個狀態結束 (Tweenlite.to() )
和從哪個狀態開始到目前狀態 (Tweenlite.from() )
以及 Tweenlite.fromTo()

而Tweener則提供addTween這個方法,功能同於Tweenlite的to方法
雖然Tweener是可以完成所有Tweenlite提供的方法的
不過已經把方法包好的Tweenlite,感覺就比較人性化
(大家都有惰性嘛XDD)


不過Tweenlite有點討厭,有些Document裡面有的class竟然下載不到
要拿到的話,就要加入什麼鬼會員才可以

比如說SplitTextField這個竟然不能用
◢▆▅▄▃崩╰(〒皿〒)╯潰▃▄▅▇◣

一怒之下就自己寫了一個XD
結果..

To be Continued..

Flex 的 layout



<s:Panel includeIn="checkPassWord" width="300" title="驗證視窗" borderVisible="true">
<s:layout>
<s:HorizontalLayout/>
</s:layout>
<s:Label text="請輸入密碼: " />
<s:TextInput id="password" displayAsPassword="true" />
<s:Button  label="確認 "/>
</s:Panel>

原來還有layout這個標籤阿
以後再試試看他到底可以幹嘛好了

星期五, 3月 12, 2010

列出所在目錄底下檔案

列出所在目錄底下檔案的PHP
從php.net上拿下來的..

每次都要從寫一次太麻煩了XDD

<?php
if ($handle opendir('.')) {
    while (
false !== ($file readdir($handle))) {
        if (
$file != "." && $file != "..") {
            echo 
"$file\n";
        }
    }
    
closedir($handle);
}
?>

星期三, 3月 03, 2010

用loader 讀取 Flex swf

因為flex做出來的swf架構和flash做出來的有點不一樣
最近用loader的時候就卡了好久 囧

後來發現只用
private function startForm(e:CloseEvent = null):void
{
    this.initStage("form");
    this.currentState = this.formState.name;
    this.form.contentLoaderInfo.addEventListener(Event.COMPLETE, function (e:Event):void {
       form.contentLoaderInfo.sharedEvents.dispatchEvent(new Event("startForm"));
    });
   
}


form裡面是接不到startForm這個事件的
因為Flex有兩個Frame,第一個Frame只有systemManager,第二個Frame才有元件
而Event.COMPLETE的時候,完成的就只有systemManager,這時的loader.content就是systemManager

所以只有當systemManager送出FlexEvent.APPLICATION_COMPLETE的時,元件才算完全被載入
這時的loader.systemManager才會變成主程式

所以修改成這樣:
private function startForm(e:CloseEvent = null):void
{
    this.initStage("form");
    this.currentState = this.formState.name;
    this.form.contentLoaderInfo.addEventListener(Event.COMPLETE, function (e:Event):void {
        form.content.addEventListener(FlexEvent.APPLICATION_COMPLETE, function (e:FlexEvent):void {
            form.contentLoaderInfo.sharedEvents.dispatchEvent(new Event("startForm"));
        });
    });
   
}



相關資料
一種Flex和as3代碼之間互相調用的方法
瞭解Flex程序的生命週期