2010年6月18日 星期五

簡單的解析Domain工具

§簡易解析domain的tools
在開發專案中,如果swf要提供Embed給其他網站使用,在swf內所要load動作等等的路徑就需要使用絕對路徑,但是若是直接將路徑寫死在開發環境環境中又要改來改去,所以最好的方式就是寫一個能夠解析目前swf所使用的domain為何,因此寫了一個簡單應急的小工具,日後若是有發現更好的方式或是BUG再回頭來補強該篇文章。

//寫一個簡單的工具Class
package com.utils.PathAnalyze
{
 public class DomainPathAnalyze
 {
  /***
  * 解析swf所在domain
  * */
  public function DomainPathAnalyze()
  {
  }

  static public function getDomain(url:String):String
  {
   var count:int = url.length -1;
   for(count ; url.charAt(count) != "/" ; count--)
   {
   }
   return url.slice(0 , count);
  }
 }
}

//可藉由Application的loaderInfo.url取得swf所在網域,然後將此url交由DomainPathAnalyze的靜態方法來取得˙Domain


/*用法*/
DomainPathAnalyze.getDomain(loaderInfo.url);

由於成長之後學習到更好的方式因該改成以下方式將會更有效能。

  static public function getDomain(url:String):String
  {
   var _index:int = url.lastIndex("/");
   return url.slice(0 , index);
  }
 
請參考 http://contest-start.blogspot.com/2011/03/blog-post.html

Flex4中以mxml tags來使用top_level ActionScript elements

§Flex4中使用top_leveel ActionScript elements
在Flex3中可以使用mxml tags來使用<Array></Array>、<Number></Number>等等top_level ActionScript elements,而這top_level elements項目都是使用,xmlns:mx="http://www.adobe.com/2006/mxml的命名空間,由於並未與視覺組件命名空間做區隔,因此若是在<Application><Application>使用了top_level elents容易與視覺元件混在一起,一方面覺得使用起來能將非視覺元件標籤直接放於視覺元件標不合理,一方面也覺得很混亂,而我自己習慣上不會去使用top_level tags的用法,但是若想測是一個組件的特性這時的top_level tags到是蠻方便的。


在Flex4中top_level elements tags設計得更合理了,這些tags是置於xmlns:fx="http://ns.adobe.com/mxml/2009"命名空間,明顯的與spark、mx來做出區隔,並且無法直接放於顯示組件tags之間,而是置放於<fx:Declarations></fx:Declarations>Tags之間使用,或是能夠接受top_level項目型別的屬性標籤之間,例如:

2010年6月15日 星期二

Flex4 Dynamic Layout

§利用Flex4的Layout特性寫一個動態更換Layout的例子
關於Flex4的Layout請參考上篇About Layout in Flex4
//動態更換layout Example
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
applicationComplete="application1_applicationCompleteHandler(event)"
layout="{new VerticalLayout()}"
>

<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.graphics.SolidColor;
import spark.layouts.HorizontalAlign;
import spark.layouts.HorizontalLayout;
import spark.layouts.TileLayout;
import spark.layouts.VerticalLayout;
import spark.primitives.Rect;


//排版物件參照
private var rectGroupVerLayout:VerticalLayout;
private var rectGroupHorLayout:HorizontalLayout;
private var rectGroupTileLayout:TileLayout;
//色彩存放的Array
private var _colors:Array = [0xff0000,0xffc600,0xfff605,0x00ff00,0x0000ff,0x5a2fe9,0xae2fe9];


protected function application1_applicationCompleteHandler(event:FlexEvent):void
{
 //建立排版物件
 rectGroupVerLayout = new VerticalLayout();
 rectGroupHorLayout = new HorizontalLayout();
 rectGroupTileLayout = new TileLayout();
 createSevenRect();
}

About Layout in Flex, 關於Flex4中 (SDK4) 的排版

§About Layout in Flex4
在Flex4中,顯示元件的動作,樣式(Style),外觀(Skin),排版(Layout)都是抽離出來成為一個類別(Class),如此做法更合乎了物件導向觀念能讓物件之間彼此更鬆散, 降低耦合,也更合乎了MVC,因此在Flex4中的顯示元件更顯得靈活好用。

上圖是Layout的類別關係圖,可以看到Flex4中具有四種原生的Layout類別,而這四種Layout類別都繼承了LayoutBase,由此父類來達到超型態(superType)作用,而如果你想要製作自己的Layout工具,繼承LayoutBase來開發自訂的Layout類。

  • <s:BasicLayout/>    絕對位置佈局
  • <s:TileLayout/>
  • <s:HorizontalLayout/>  水平排列佈局
  • <s:VerticalLayout/>   垂直排列佈局
如何使用:
 使用標籤或是layout屬性來設定,注意在標籤中如果是小寫這代了此標籤是屬性或方法,而layout他是一個屬性。

2010年6月12日 星期六

FlashBulider使用AsDoc建立API文件時發生Error loading處理

§FlashBulider使用AsDoc建立API文件時發生Error loading處理

狀況描述:
FlashBulider使用External Tools呼叫AsDoc建立API文件發生Error loading: C:\Program Files\Java\jdk1.6.0_17\jre\bin\server\jvm.dll的處理。

作業系統環境:Windows7 64
系統上具有安裝的程式開發項目:JAVA JDK 6(64位元)(JAVA的開發包) ,FlashBulider ,Flex Bulider ,Eclipse ,Ruby

錯誤訊息:






解決方式:
於External Tools介面中,切到Environment(環境),

  • 選擇New(新增),填入以下數值
  1. name(變量): JRE_HOME   [可以取你自己習慣的名稱]
  2. value(值): C:\Program File\java\jre\bin     [你的Jre所在路徑]
  • 選擇"將本機環境變數替換為指定環境"
  • 按下Apply(應用)
  • 運行,即可再次產生API文件















不知道為什麼不可以使用JDK內部的JRE,而一定要外部的JRE。

2010年6月9日 星期三

Java 編譯詳細說明與使用注意事項,package有無差很大

§Javac 與 Java 使用注意細節
今天小弟編譯時未注意package讓我莫名其妙爽爽,所以研究了一下將其寫成筆記記錄。

Setp1.建立測試資料夾結構如下

  • C:\MyProject\Classes\tw\com\test
  • C:\MyProject\source
  • 可善用命令列來建立
  • 建立資料夾指令:md [資料夾名稱]
Setp2.於source底下建立SayHello.java檔
於C:\MyProject\source編寫如下Java Source code ,完成後存成SayHello.java檔。
  • 注意此檔未使用package宣告。
  • 注意不管是使用筆記本或是NotePad++來編輯,存檔格式請用ANSI,使用UTF8反而會讓中文輸出會變成亂碼。
public class SayHello

{ 
public static void main(String[] args)
{ 
System.out.println("hello 歡迎來到小J的部落格"); 
} 
} 

Step3.用javac編譯.java檔成為.class檔
小技巧:輸入命令可以善用Tab鍵來代替檔名輸入,將會快速許多。
於command line中輸入:
  1. C:\>cd MyProject
  2. C:\MyProject>cd source
  3. C:\MyProject\source>javac SayHello.java
如此會在source產生一個編譯好的SayHello.class於source資料夾中。

Step4.用java執行.class檔
輸入:
  • C:\MyProject\source>java SayHello
輸出:
  • hello 歡迎來到小J的部落格
Step5.使用javac與參數-d將編譯好之檔案置放於classes
小技巧:..\其實也可以使用../代替
輸入:
  • C:\MyProject\source>javac -d ..\classes SayHello.java
  • C:\MyProject\source>cd.. \classes
  • C:\MyProject\classes>
  • C:\MyProject\classes>dir
  • 如此可以看見classes資料夾中產生了一個SayHello.class
輸入:
  • C:\MyProject\classes>java SayHello
輸出:
  • hello 歡迎來到小J的部落格
Step6.清除掉剛剛產生的.class檔

2010年6月8日 星期二

Blazeds4 配置與Flex Remote測試 ,使用tomcat6

§Blazeds 配置與Flex Remote測試(for windows system)
注意:本文使用的是tomcat6 , Blazeds 4
Step1.至Adobe Open Source取得Blazeds。
  • Adobe Open Source頁面用IE開啟版面會跑掉,可以使用google瀏覽器開啟頁面。








 登入後按下IAgree




找到Download,下載BlazeDS binary distribution版本

  • turnkey是內含了tomcat
  • binary  distrbution單純就只有BlazeDS










Step2.將下載回來的BlazeDS壓縮檔解壓縮

  • 解壓縮後,於資料夾內會有兩隻檔案,blazeds.war 與 blazeds-bin-readme.htm。

Step3.將blazeds.war置放於tomcat底下的webapps資料夾
  • 執行startup運行tomcat,該批次檔位於C:\[你的tomcat資料夾名稱]\bin\startup
  • Tomcat運行中遇到.war的檔案會自動將他解壓縮,會看見在webapps底下多了一個blazeds資料夾。
問題:未自動解壓,如果tomcat未自動解壓,是因為tomcat的server.xml未配置。
解決方式:
  • 編輯C:\[你的tomcat資料夾]\conf\server.xml檔。
  • 於Host參數中加入deployOnStartup="true"
  unpackWARs="true" autoDeploy="true"
  xmlValidation="false" xmlNamespaceAware="false">


  • 如果你覺得麻煩也可以用解壓縮程式來解他,但tomcat如果會自動解是比較方便。

Step4.更改解壓完blazeds資料夾
  • 將blazeds改成blazedsAMF
  • 更改完成後應為:C:\tomcat6\webapps\blazedsAMF
  • 此步驟可以不變更,依照自己的喜好習慣來決定。
Step6.於blazedsAMF\WEB-INF\src裡創建tw\com\myRemoteService的資料夾結構
  • 建立好結構:
  • C:\[tomcat資料夾]\webapps\blazedsAMF\WEB-INF\src\tw\com\myRemoteService
Step7.於\webapps\blazedsAMF\WEB-INF\src\tw\com\myRemoteService中建立一支SayHello.java。