2007
12.28

留言板

anistar blog

這是公開的留言板,若有訊息想告知 ANISTAR 可於此處留言。

594 comments so far

Add Your Comment
  1. 老師您好:
    我在做Flex+AIR書中範例11_2_1_DataGrid時,若將xml中的資料刪到剩下一筆時,ex:

    <aaa>
    <bbb>
    <ccc>1</ccc>
    <ddd>2</ddd>
    </bbb>
    </aaa>

    ,則DataGrid無法正確顯示資料。
    請問這是ArrayCollection的限制或者需要另外作處理呢?

    PS:不好意思,忘了轉碼,請將上一則留言刪除。

    • 你所提供的XML結構是不會造成DataGrid顯示不出來的,不過如果XML中的節點只剩一筆資料時是有可能無法正常work的,這時你有兩種作法可以避免這個問題。
      1. 請HTTPService抓回資料時用e4x來處理他
      2. 寫一個判斷是檢查型態,ArrayCollection在預設狀態會幫你轉,但是不保證100%正確,你就要自己調整一下了。

  2. Dear 老師:

    我似乎在Reference 找到了一個類似的解決方式

    var sourceSnd:Sound = new Sound();
    var outputSnd:Sound = new Sound();
    var urlReq:URLRequest = new URLRequest(『test.mp3″);

    sourceSnd.load(urlReq);
    sourceSnd.addEventListener(Event.COMPLETE, loaded);

    function loaded(event:Event):void
    {
    outputSnd.addEventListener(Event.SAMPLE_DATA, processSound);
    outputSnd.play();
    }

    function processSound(event:SampleDataEvent):void
    {
    var bytes:ByteArray = new ByteArray();
    sourceSnd.extract(bytes, 4096);
    event.data.writeBytes(upOctave(bytes));
    }

    function upOctave(bytes:ByteArray):ByteArray
    {
    var returnBytes:ByteArray = new ByteArray();
    bytes.position = 0;
    while(bytes.bytesAvailable > 0)
    {
    returnBytes.writeFloat(bytes.readFloat());
    returnBytes.writeFloat(bytes.readFloat());
    if (bytes.bytesAvailable > 0)
    {
    bytes.position += 8;
    }
    }
    return returnBytes;
    }

    • Good Job…沒錯就是用這招,這招我也常常用在做轉碼動作的時候使用。

  3. Dera 老師:

    附上片段模擬程式 大致是這樣的想法
    private var _userFile:File;
    private function openMusic(e:MouseEvent):void
    {
    _userFile = new File();
    _userFile.browseForOpen(『select a mp3″, [ new FileFilter("music", "*.mp3")]);
    _userFile.addEventListener(Event.SELECT , onSelected);
    var temp:File = File.createTempFile();
    }

    private var tempF:File;
    private function onSelected(e:Event):void
    {
    tempF=e.currentTarget as File;

    //↓此行模擬介面傳入的剪輯範圍 cutMuicByFile 這個function 是在做bytearray 剪輯運算並轉回file目的是將剪好的東西可以save回使用者電腦
    var test:File=(cutMusicByFile(tempF,0,0.5));
    }

  4. Dear 老師:
    老師我最近試著利用AIR寫剪輯MP3的片段來當手機鈴聲使用,我用AIR的File中browseForOpen方法成功的將cline端的Mp3轉乘byteArray,我寫了一個介面可以剪裁它的長短(配合MP3的標頭訊息),也可以另存新檔出來,但我卻遇到了一個百思不解的問題,就是我要讓這個程式可以邊剪邊聽,所以我new了一個Sound來play,但……sound只能接受URL,不能直接將剪好的byteArray傳送給他,所以想請教老師sound是否有接受byteArray的方式,如果沒有我是有想到很瞎的方法就是利用file的URL訊息再用sound去load一次但這樣似乎很笨多載了一個用不到的MP3檔案進來。

    9798笨小花

  5. 老師請問一下~~
    在Flex中,用Web的開發環境中,
    有辦法直接開啟本端照片嗎?
    例如:

    不知是否有辦法直接開啟,而不要先上傳再開啟~
    因為當這樣指時,就會出現一段安全性的問題~

    • 我想你說的直接開啟應該是指在client呈現資料,答案是』當然可以』,這個只需要用FileReference就可以做到了,下次有空我再分享出來給你看。

  6. 用DataGrid匯入資料後,按每個欄位的head會自動排序,
    可是在排序中文上好像有問題,似乎不是按筆畫的多少來排,
    有什麼方法可以解決嗎 :)

    • 這個問題我研究過但是不是這麼容易解決,原因不是中文不能在程式中做比較,而是ActionScript在比較時是以Unicode的編碼號碼來比較,可惜的是Unicode的編碼並不是以筆劃做為順序的。
      我的處理方法你可以參考看看,我是採用Big5的編碼規則來處理,因為Big5的規則是以文字的筆劃做為優先,再來以部首,但是實際上測試這個方法沒有辦法100%正確(雖然大致上都會得到正確的結果),既然沒辦法做到100%我就不好意思公佈出來給大家參考了,免得造成你的程式誤判。
      如果你有找到什麼100%正確的方法,希望您也可以過來跟大家分享一下解法。

  7. 一個讀者的疑惑:
    讀了Flex+AIR程式開發,在第十三章Flash Remoting,照著書中步驟,在Windows XP Home + IIS 5.0(.net 1.1或.net2.0)的環境下無法成功部署Fluorine範例.
    請問書中所附的FluorineFX範例程式是否要在IIS6.0 +.net3.0(含/或以上)的環境才可部署.

    • 不需要,只需要在IIS5.0和.net 2.0以上的版本就可以Run了,我想可能是你IIS設置上有一些小問題。

  8. hi,版主
    小弟有買您的Flex+AIR程式開發這本書,
    目前看到第三章,受益良多,先再此感謝。
    有兩個問題想請教
    一、Flex在做無障礙方面有什麼支援嗎?我是說如果整個網站用Flex來做的話,有辦法通過無障礙嗎?
    二、用Flex做網站的話,那麼搜尋引擎如何把關鍵字加入資料庫中,排名會不會有影響。
    先謝謝版主的回應 :)

    • 1.只要是符合物無障礙的要求,什麼技術做的網站都可以是無障礙網頁。
      2.目前google已經可以搜尋SWF的內容,但是這並不代表是萬靈丹,你給你參考Adobe原廠對SEO的說明,也可以觀看我在IThome專訪中的看法。

      另外謝謝你的支持,若是你有任何RIA的網站應用,非常歡迎來這邊讓大家知道。

  9. 在RichTextEditor裡編輯文字時,無法用ctrl+z進行文字回覆的動作,

    TextInput和TextArea也是一樣,

    請問一下要如何讓這些文字組件能進行ctrl+z的文字回覆動作?

    • 我的說法有點錯誤,ctrl+z是keyEvent的設定

      正確來說,應該是如何讓文字組件具有Undo和Redo的功能?

      網路上找不到相關的討論議題 Orz

    • Flex沒提供這個功能,你必須要自己實現了,你只需要在輸入時記憶之前的動作,就可以實現undo和redo的動作。

  10. 你好,Anistar,

    我有一個網站正在開發,需要找人做 front-end 以及 back-end database 的連接,不知您接不接案子?