blog.Ring.idv.tw

Articles

ActionScript 3.0 & Flex 2 Framework Posters

2007-05-09 22:56:26 | Add Comment

Loading XML for AS 3.0

以往要載入一個外部的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

Apollo, Silverlight and JavaFX終於要掀起一場RIA革命了~

下半年之後就看各自的策略如何攻城掠地~

行銷、廣告以及書籍的質與量等…是戰場之一;開發效率、可維護性、可移植性等…這又取決於本身的產品特質~

不過就以「可移植性」這方面來說的話,我想應該比較少人會選擇Silverlight,而投向Apollo或JavaFX的懷抱,然而這兩者的取向又有點不一樣~ 不曉得會不會演變成「鷸蚌相爭,漁翁得利」的情況~

2007-05-08 22:32:37 | Add Comment

嘸蝦米切換繁體中文、简体中文

参考网站

切换成「简体中文」:

,,C

也就是可以依照简体字的写法、呒虾米的拆法来输入中文字。

切换成「台式打法」:

,,CT

这样就可以用繁体字的写法,来打出简体字罗~

若要切换回繁体输入:

,,T

便可以再切換回繁體輸入法囉~

2007-05-07 23:51:48 | Add Comment

Blur - 影像處理 for AS2

可用來將影像模糊化~ 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

Next Posts~:::~Previous Posts
Copyright (C) Ching-Shen Chen. All rights reserved.

::: 分類 :::

::: 最新文章 :::

::: 最新回應 :::