Flex.org 提供的海報下載~
blog.Ring.idv.tw
2007-05-09 22:56:26 | Add Comment
以往要載入一個外部的XML檔案的話,我們可以簡化成下列的作法:
Loading XML
var externalXML:XML = new XML();
externalXML.onLoad = function(success)
{
trace(externalXML);
};
externalXML.load("myxml.xml");
從載入方式到Callback Event的處理,完全交由「XML」類別來孤軍奮戰~
然而ActionScript 3.0,它終於多了幾位幫手來協助它了~ 不僅減輕它的負擔,也能夠各司其職~
Loading XML for AS 3.0
var externalXML:XML;
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("myxml.xml");
loader.load(request);
loader.addEventListener(Event.COMPLETE, onComplete);
loader.addEventListener(ProgressEvent.PROGRESS, onProgress);
function onComplete(event:Event):void
{
externalXML = new XML(event.target.data);
trace(externalXML.toXMLString());
}
function onProgress(event:ProgressEvent):void
{
trace(event.bytesLoaded);
trace(event.bytesTotal);
}
我們可以發現載入方式完全交由「URLLoader」去處理,Callback Event也委託「IEventDispatcher」來負責,最重要的是~ 這樣的作法才符合 High Cohesion and Low Coupling,大大地增強其彈性~
而且ActionScript 3.0是以ECMAScript for XML (E4X) specification (ECMA-357 edition 2)為基礎來處理XML資料,不僅更容易使用也更簡化操作~ 順便看一下例子:
var myXML:XML = <order> <item id='1'> <menuName>burger</menuName> <price>3.95</price> </item> <item id='2'> <menuName>fries</menuName> <price>1.45</price> </item> </order> trace(myXML.item[0].menuName); // Output: burger trace(myXML.item.(@id==2).menuName); // Output: fries trace(myXML.item.(menuName=="burger").price); // Output: 3.95
果然夠簡化與方便!!!
2007-05-09 22:18:01 | Add Comment
Apollo, Silverlight and JavaFX終於要掀起一場RIA革命了~
下半年之後就看各自的策略如何攻城掠地~
行銷、廣告以及書籍的質與量等…是戰場之一;開發效率、可維護性、可移植性等…這又取決於本身的產品特質~
不過就以「可移植性」這方面來說的話,我想應該比較少人會選擇Silverlight,而投向Apollo或JavaFX的懷抱,然而這兩者的取向又有點不一樣~ 不曉得會不會演變成「鷸蚌相爭,漁翁得利」的情況~
2007-05-08 22:32:37 | Add Comment
In General
切换成「简体中文」:
,,C
也就是可以依照简体字的写法、呒虾米的拆法来输入中文字。
切换成「台式打法」:
,,CT
这样就可以用繁体字的写法,来打出简体字罗~
若要切换回繁体输入:
,,T
便可以再切換回繁體輸入法囉~
2007-05-07 23:51:48 | Add Comment
In Flash, ActionScript
可用來將影像模糊化~ Try it!
Blur
import flash.display.BitmapData;
function Blur():Void
{
var myBitmapData:BitmapData = BitmapData.loadBitmap("brg");
var height:Number = myBitmapData.height;
var width:Number = myBitmapData.width;
var gray:Array = new Array(width);
for(var i:Number = 0 ; i < width ; i++)
gray[i] = new Array(height);
var gray2:Array = new Array(width);
for(var i:Number = 0 ; i < width ; i++)
gray2[i] = new Array(height);
//RGB to GRAY
for(var i:Number = 0 ; i < width ; i++)
{
for(var j:Number = 0 ; j < height ; j++)
{
var rgb:Number = myBitmapData.getPixel(i,j);
var r:Number = 0xFF&(rgb >> 16);
var g:Number = 0xFF&(rgb >> 8);
var b:Number = 0xFF&rgb;
gray[i][j]= 0.299*r + 0.587*g +0.114*b;
}
}
for(var x = 1; x < width-1;x++)
{
for(var y = 1; y < height-1;y++)
{
/**
00(a) 10(b) 20(c)
01(d) 11(*) 21(e)
02(f) 12(g) 22(h)
*/
var a = gray[x-1][y-1]*0.1;
var b = gray[x][y-1]*0.1;
var c = gray[x+1][y-1]*0.1;
var d = gray[x-1][y]*0.1;
var e = gray[x][y]*0.1;
var f = gray[x+1][y]*0.1;
var g = gray[x-1][y+1]*0.1;
var h = gray[x][y+1]*0.1;
var i = gray[x+1][y+1]*0.1;
var gc = (a+b+c+d+e+f+g+h+i);
gray2[x][y] = 0xff000000 |gc<<16 | gc<<8 | gc;
}
}
//set pixel value
for(var i:Number = 0 ; i < width ; i++)
{
for(var j:Number = 0 ; j < height ; j++)
{
myBitmapData.setPixel(i,j,gray2[i][j]);
}
}
var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap(myBitmapData,this.getNextHighestDepth());
}
Blur();
2007-05-07 00:09:35 | Add Comment