可以在Flex中將Image的source設定在CSS中,這樣就可以很方便、很動態的透過CSS來換圖片。
首先,先在CSS中加入下列的code:
.myImageSource
{
myPicOne: Embed(source="../Assets/mypic1.png");
myPicTwo: Embed(source="../Assets/mypic2.png");
}
然後,再到Flex中將Image修改一下:
myImage.styleName = 'myImageSource';
myImage.source = myimage.getStyle(mypicone);
或是在mxml中
<mx:Image id="myImage" styleName="myImageSource" source ="{myimage.getStyle('myPicOne')}" />
設定好後,妳就可以在CSS中換Image的圖了,如下:
myImage.source = myImage.getStyle("myPicTwo");
不過,如果是要動態的換CSS的話那這方法就行不通了
比如一開始是載入a.css,要動態換成b.css的話,因為Flex在一開始並不會自動把b.css所有的圖都embed進來,所以切換的時候,b.css中的myPicTwo會跑不出來喔。
文章來源:Can I set the image source in CSS?
星期三, 7月 14, 2010
星期三, 4月 07, 2010
星期四, 12月 31, 2009
星期四, 12月 03, 2009
星期五, 11月 06, 2009
Eclipse = Aptana + Flash Builder 4 (Flex4)
之前是用Flex Builder 3來寫flex,用Aptana來寫PHP但這二個IDE的核心其實都是Eclipse
所以等於是裝了二套的Eclipse在系統裡跑
這樣不但同時使用起來效能很不好,而且在寫程式時還要一直切來切去
實在不是個好的使用經驗
最好的解決方法,當然就是裝Eclipse,再外掛Aptana和Flash Builder
- Eclipse可以到 這裡 下載,Mac和Windows版都免安裝就可使用
- Aptana for Eclipse的plugin點 這裡
- Flash Builder 4 for Eclipse的plugin點 這裡
再分別安裝Aptana和Flash Builder(記得選plug在剛剛的Eclipse之下)
接下來就可以享受同時寫PHP和Flex的方便了!
備註:
Eclipse PDT本身就支援PHP了,何必還要裝Aptana呢 ?
這是因為Eclipse PDT本身的PHP Engine並不認識code ignitor,所以不會有autocomplete或是code hint,因此安裝Aptana來幫助Eclipse有autocomplete的功能。
星期六, 8月 22, 2009
parseInt('08')
parseInt()是用來把字串轉換成整數的函式
在網路上看相關的介紹時(詳細說明),有說明一些parseInt()的注意事項
是和第二個參數 radix (二進位、八進位...)有關
選擇不同的進位,得到的結果也會不同
在網路上看相關的介紹時(詳細說明),有說明一些parseInt()的注意事項
是和第二個參數 radix (二進位、八進位...)有關
選擇不同的進位,得到的結果也會不同
星期四, 8月 20, 2009
去掉YouTube Logo的代價
想用Flex寫程式撥放YouTube的影片並不是難事,只要取得想要撥放影片的網址(比如http://www.youtube.com/watch?v=8JM2BAZ8n70),再於程式中做些轉換後,就可以在Flex程式中控制、撥放。
但是要怎麼轉換呢 ? 有二種方式:
首先,想解析網址,並去取得影片的flv連結就不是件容易的事( 這有文章 ),再來,最大的問題是影片的品質,比較一下吧:




不難看出,用YouTube Player的影片畫質好太多了
不但用YouTube Player很方便撰寫程式,連撥放的速度和穩定度都好很多
YouTube這麼做也是有他的用意,真的是廣告打得很兇
雖然我真的很想把這Logo去掉,但為了品質和速度,也不得不向YouTube低頭,用他的Player了...
但是要怎麼轉換呢 ? 有二種方式:
- 比較簡單的,就是用YouTube提供的Player( 像這樣 ),只要將網址傳進去,它就會自動連結並撥放了,也不用什麼轉換,但是缺點是右下方會有YouTube的Logo。
- 比較進階的,就是用Flex內建的VideoDisplay或是用其它的Flv Player(如FXVideo)來撥,這需要去解析網址,並去取得影片的flv連結後,再餵給player來撥放,這樣當然就不會出現YouTube的Logo。
首先,想解析網址,並去取得影片的flv連結就不是件容易的事( 這有文章 ),再來,最大的問題是影片的品質,比較一下吧:




不難看出,用YouTube Player的影片畫質好太多了
不但用YouTube Player很方便撰寫程式,連撥放的速度和穩定度都好很多
YouTube這麼做也是有他的用意,真的是廣告打得很兇
雖然我真的很想把這Logo去掉,但為了品質和速度,也不得不向YouTube低頭,用他的Player了...
星期五, 8月 14, 2009
YouTube的Chromeless Player
星期日, 5月 10, 2009
Flex的中文字型嵌入
今天在做Flex的中文字型嵌入
其實這有好幾種方法,也從網路上看到了很多前輩的心得
我來整理一下:
所以最後的這個方法應該說是最無敵的
而且也是最穩定的方法
另外順帶一提
Flash Player 10可以抓到並支援local的中文字型
還可以開啟與儲存local檔案(這有demo)
這也是一大的福音呀
其實這有好幾種方法,也從網路上看到了很多前輩的心得
我來整理一下:
- 在server端下手: 可以參考這篇文章,作者demo了在Flex端把文字輸入,再把這包string傳到server端給php去做即時的轉換,產生出一包新的且轉好字型的swf,再丟回去給Flex。這是需要對server有了解,且可以操作到server的user用的,但是真的可以做到即時的中文字型轉換
- 在Flex動手:主要也有四個方式
- 將字型檔案全部embed進flex
- 用連結的方式來載入外部的字型檔案
- 用unicode的方式只載入所需的特定字
- 將字在Flash中設定好(打好字、選好字型),再設定到Flex的css中(這有demo)
所以最後的這個方法應該說是最無敵的
而且也是最穩定的方法
另外順帶一提
Flash Player 10可以抓到並支援local的中文字型
還可以開啟與儲存local檔案(這有demo)
這也是一大的福音呀
星期三, 1月 02, 2008
flash player跨網域的問題 (flex3與flash cs3都適用)
今天花了一整天的時間在研究RSS,先是用flex3來寫RSS的簡易版閱讀器,完成後卻發現本機可以執行,一upload到網路後卻動彈不得了,原來是flash player跨網域的問題。
flash player要讀遠端的RSS資料(也就是載入一個遠端的XML),基本的解法,如是在不同子網域(如www.m-w.com.tw或npbp.m-w.com.tw),那就只需要在flash中寫一個System.security.allowDomain("*.m-w.com.tw")就可以了;若是不同的網域(如www.m-w.com.tw或www.edimax.com.tw那就需要寫一個crossDomain.xml(寫法可參考這),然後把這crossDomain.xml檔案放到提供資料的那一端才行,比如你想載入yahoo的RSS(就像這個),那你需要將crossDomain.xml這檔案放到yahoo的server中才可以。...............這怎麼可能呢?在作夢嗎?
我在想,這是不是flex3的限制,所以改採flash cs3也寫一個RSS的簡易版閱讀器,結果一樣,無法解決flash player跨網域的問題,有一篇在介紹flash player安全性的文章寫得很好,可以參考一下。
最後,想到了個方法,先用php將遠端yahoo的RSS讀進來,這不就是在本地端了嗎,然後再用flash去載入php不就解決了!沒錯,這就是正解,雖然很笨,但還是解決了(成品在師大師培處網站的左上方新聞區),看了網路上一些前輩們似乎也是用相同的方法來解決兩個不同網域的問題。
其實我想,應該有更高級一點的解法,flex3都可以支援wsdl直接轉換成as來用了,表示flex對於web service的支援性相當的好,RSS(XML)應該更不在話下,小弟才疏學淺,如果有哪位前輩通曉解決良方,望請指導一下囉!
flash player要讀遠端的RSS資料(也就是載入一個遠端的XML),基本的解法,如是在不同子網域(如www.m-w.com.tw或npbp.m-w.com.tw),那就只需要在flash中寫一個System.security.allowDomain("*.m-w.com.tw")就可以了;若是不同的網域(如www.m-w.com.tw或www.edimax.com.tw那就需要寫一個crossDomain.xml(寫法可參考這),然後把這crossDomain.xml檔案放到提供資料的那一端才行,比如你想載入yahoo的RSS(就像這個),那你需要將crossDomain.xml這檔案放到yahoo的server中才可以。...............這怎麼可能呢?在作夢嗎?
我在想,這是不是flex3的限制,所以改採flash cs3也寫一個RSS的簡易版閱讀器,結果一樣,無法解決flash player跨網域的問題,有一篇在介紹flash player安全性的文章寫得很好,可以參考一下。
最後,想到了個方法,先用php將遠端yahoo的RSS讀進來,這不就是在本地端了嗎,然後再用flash去載入php不就解決了!沒錯,這就是正解,雖然很笨,但還是解決了(成品在師大師培處網站的左上方新聞區),看了網路上一些前輩們似乎也是用相同的方法來解決兩個不同網域的問題。
其實我想,應該有更高級一點的解法,flex3都可以支援wsdl直接轉換成as來用了,表示flex對於web service的支援性相當的好,RSS(XML)應該更不在話下,小弟才疏學淺,如果有哪位前輩通曉解決良方,望請指導一下囉!
訂閱:
文章 (Atom)