Adobe Reader的潛在問題

0 意見

Adobe 在 2/19 公佈了 Adobe Reader的潛在問題,在允許javascript執行的情況下,Reader有可能被惡意程式碼攻擊,影響的版本包括 9 跟之前所有的版本,如果你也有在用Adobe Reader,記得把javascript給關掉。

關掉方式:

編輯 ─> 偏好設定 ─> JavaScript ─> 啟用 Acrobat JavaScript

將勾選取消

原文 http://www.adobe.com/support/security/advisories/apsa09-01.html



如何做出無邊框的AIR

0 意見

AIR可自定視窗的外型,透過三項參數就可取消原本的系統外框,首先是describe檔的 systemChrome要為none,使其改用FlexChrome,再來要把transparent設為true,讓沒有顏色的背景為透明,之後在到AIR的mxml,把WindowedApplication的showFlexChrome屬性設為false,如此一來就做出無視窗的AIR了

describe

<!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
<systemChrome>none</systemChrome>
<!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
<transparent>true</transparent>

mxml

<mx:WindowedApplication 
xmlns:mx="http://www.adobe.com/2006/mxml" 
layout="absolute" 
showFlexChrome="false">


AIR iPhone

0 意見

coverflow.jpg

之前看到的一個有趣的應用,用AIR來模擬iPhone的UI,雖然功能有限,但拿來過過乾癮也不錯。下載

作者做的展示影片

作者網站:http://merhl.com/

AIR Runtime:http://get.adobe.com/air/



Flash 10 Filereference

0 意見

Flash 10 Filereference新增了Save和Load,可讓使用者不必透過檔案上傳到伺服器回傳,直接就可存取檔案,使用起來方便許多,寫給簡單的範例給大家做參考。

值得要注意的是 "browse"只能透過使用者觸發,也就是不能直接呼叫,要為click之類的事件觸發,並在browse之後才做上傳的動作,這部分是為了保護非法的存取

觀看範例

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
applicationComplete="main();"
width="640" height="480">

<mx:Script>
<![CDATA[
import mx.graphics.codec.JPEGEncoder;
import mx.core.UIComponent;
import flash.net.FileReference;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.display.BitmapData;
import mx.controls.Alert;

private var fileRef:FileReference;
private var saveFileRef:FileReference;

private var filterArray:Array = [];
private var loader:Loader;

private function main():void
{
var container:UIComponent = new UIComponent();

loader = new Loader();

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadErrorHandler); fileRef = new FileReference();
filterArray.push(new FileFilter("JPEG", "*.jpg"));
filterArray.push(new FileFilter("GIF", "*.gif"));
filterArray.push(new FileFilter("PNG", "*.png"));
filterArray.push(new FileFilter("SWF", "*.swf"));

saveFileRef = new FileReference();

saveFileRef.addEventListener(Event.OPEN, fileOpenHandler);
saveFileRef.addEventListener(Event.CANCEL, cancelHandler);
saveFileRef.addEventListener(Event.COMPLETE, saveCompleteHandler);

fileRef.addEventListener(Event.COMPLETE, fileCompleteHandler);
fileRef.addEventListener(Event.OPEN, fileOpenHandler);
fileRef.addEventListener(Event.SELECT, fileSelectHandler);
fileRef.addEventListener(Event.CANCEL, cancelHandler);


container.addChild(loader);
this.addChildAt(container, 0);
}

private function loadCompleteHandler(event:Event):void
{
myMsg.text += "loader complete\n";
}

private function loadErrorHandler(event:IOErrorEvent):void
{
myMsg.text += "IOError\n";
}

private function fileCompleteHandler(event:Event):void
{
myMsg.text += "complete\n";
var tmpFileRef:FileReference = event.currentTarget as FileReference;
loader.unloadAndStop(true);
loader.loadBytes(tmpFileRef.data);
}

private function fileOpenHandler(event:Event):void
{
myMsg.text += "open\n";

}

private function fileSelectHandler(event:Event):void
{
myMsg.text += "select\n";
//選取後讀入
var tmpFileRef:FileReference = event.currentTarget as FileReference;
tmpFileRef.load();
}

private function uploadHandler(event:MouseEvent):void
{
//正常叫用
fileRef.browse(filterArray);
}

private function cancelHandler(event:Event):void
{
myMsg.text += "cancel\n";
}

private function saveCompleteHandler(event:Event):void
{
myMsg.text += "save complete\n";
}

private function saveHandler(event:MouseEvent):void
{
if (loader.content)
{
var bitmapData:BitmapData = new BitmapData(loader.width, loader.height);
var encoder:JPEGEncoder = new JPEGEncoder(90);
var byteArray:ByteArray;

bitmapData.draw(loader);
byteArray = encoder.encode(bitmapData);

saveFileRef.save(byteArray, "test.jpg");
}
else
{
Alert.show("請先Upload");
}
}

]]>
</mx:Script>
<mx:TextArea x="124.25" y="369.95" width="465.8333" height="100.98485" id="myMsg"/>
<mx:Button x="35.55" y="391.6" label="Upload" click="uploadHandler(event);"/>
<mx:Button x="35.55" y="421.2" label="Save" click="saveHandler(event);" width="65" height="21.969696"/>
</mx:Application>

在AIR的File類別也繼承自Filereference,所以File也能使用Load和Save,用法跟 AIR的FileStream不同,以後有機會再來介紹



Flash MMOGame

0 意見

最近常看到用Flash所開發的Web Game,雖然這類技術早已不是新聞,但看到還是覺得蠻新奇的,介紹一些我看到的WebGame

樂土

由遊戲大廠 XPEC所研發的 Flash Web Game,整體畫面輕鬆可愛,雖然操作有些微的不順,但看在美美的畫面就原諒他吧。目前還開放免費註冊,有興趣朋友可以玩玩看

官網 http://www.letu365.com/
2009-02-24_215646.png

WEB 武林

台灣所經營的 Flash Web Game,核心應該來自大陸,遊戲畫面還可以,雖然還有些小bug,但己經算是不錯的 Web Game了

官網 http://50.goldsky.com.tw/

2009-02-24_222229.png

WEB戰牌

在日本很有名的 Alteil,在台灣則由遊戲橘子代理,雖然規則有點複雜,但十分有趣,推薦給喜歡卡片遊戲的玩家

日本官網 http://www.alteil.jp/index.php

台灣官網 http://tw.alteil.gamania.com/

2009-02-24_224922.png

富豪街

將整個大富翁玩法移到網頁平台,遊戲還蠻順暢的

官網 http://rich.chinesegamer.net/

2009-02-26_021854.jpg



Auditorium

0 意見

2009-02-24_224041.png

很漂亮的遊戲,玩法跟介面都很有創意,愈到後面愈漂亮

http://www.playauditorium.com/



Fishermans-day

0 意見

fishman.png

法國Dangerous Rabbits 公司的展示作品,RPG類型的Flash遊戲,整體速度跟畫面都很不錯,值得學習

Game demo http://www.dangerous-rabbits.com/independant-projects/fishermans-day/demo/

Dangerous Rabbits http://www.dangerous-rabbits.com/



Adobe Flash Player in action

0 意見

flashaction2.jpg

來看看Flash能做些什麼,http://www.adobe.com/products/flashplayer/action/



簡單的 Carousel 寫法

2 意見
一般常見的 Carousel 是以圓的半徑跟徑度換算 Cos、Sin來定位,如果是 Flash 3D API 還要多算物件的順序,介紹一個用 PV3D的簡易寫法,只需計算角度即可
觀看範例
package
{
    import flash.events.Event;
    
    import org.papervision3d.materials.ColorMaterial;
    import org.papervision3d.objects.DisplayObject3D;
    import org.papervision3d.objects.primitives.Plane;
    import org.papervision3d.view.BasicView;
    
    /**
     * 簡易Carousel,以PV3D內附的BasicView為基礎,使用yaw()跟moveForward()來放置位置
     */
    [SWF (width = "320", height = "240", backgroundColor = "#000000", frameRate = "30")]
    public class SimpleCarousel extends BasicView
    {
        private var planeNum:uint = 15;
        private var carouselRadius:uint = 400;
        private var carouselContainer:DisplayObject3D = new DisplayObject3D();
        
        public function SimpleCarousel() 
        {                                       
            super(320, 240, true);
            
            for (var i:uint = 0; i < planeNum; i++)
            {
                var planeWidth:uint = 100;
                var planeHeight:uint = 100;                             
                var randomColor:uint = Math.floor(Math.random() * 0x1000000);
                var colorMat:ColorMaterial = new ColorMaterial(randomColor, .7);
                
                colorMat.doubleSided = true;
                
                var plane:Plane = new Plane(colorMat, planeWidth, planeHeight, 2, 2);                           
                var angle:uint = (360 / planeNum) * i;
                
                //旋轉角度後,直接朝該正面前進
                plane.yaw(angle);
                plane.moveForward(carouselRadius);
                
                carouselContainer.addChild(plane);                              
            }
            
            this.addChild(this.viewport);
            
            this.scene.addChild(carouselContainer);
            this.startRendering();                  
        }
        
        override protected function onRenderTick(event:Event=null):void
        {
            super.onRenderTick(event);
            
            carouselContainer.yaw(2);
        }
    }
}
這樣就完成了,同理,如果將垂直加入運算,也可簡單做出球體的感覺


Akinator.com

0 意見

網址:http://en.akinator.com/

很有趣的網站,裡面的精靈會一直詢問你問題,最後猜你想的人物,個人覺得猜中率還蠻高的



Flash遊戲推薦 part1

0 意見

書韱分享,一些不錯的flash網站

駕駛3D的汽車畫出指定的圖形吧
仿有名的gear solid VR遊戲,以PV3D實現3D場景
Flash遊戲網站,裡面的遊戲都十分簡單,畫風柔和的小遊戲
Flash遊戲網站,裡面的遊戲都很特殊,但十分有趣,有空一定要玩一玩
台灣人自制的遊戲,很舊了,好不容易才找到連結
非常有名的flash遊戲,簡單的操作跟多樣化的關卡,這款遊戲也有被移值到PSP
日本有名的Flash紙牌遊戲,台灣也有代理上市
許多簡單且有趣的Flash RPG遊戲
有非常多有趣的Flash益智遊戲,想太久還會有溫馨提示
著名的浮遊生物遊戲,曾出在ps3跟psp的下載遊戲


3D網站推薦 part1

0 意見

書韱分享,一些不錯的3D網站

有點類似3D版的紙娃娃系統
Away3D的展示作品,效果非常好,不過很吃電腦資源
球鞋的部分是3D的,登入後還可繪製自己的球鞋
實現了3D人物的互動,值得一玩
非常棒的3D網站,3D技術跟網頁結合的相當完美
一樣是3D,效果還不錯
3D排列十分多樣,非常棒的網站
相當特殊的3D網站,可在3D場景的建築物內閱讀人物訊息
跟下面的網站是同一作者,可自由創建跳舞角色,會變成3d在跳舞喔
一定要看的3D網站,看過之後會覺得flash 3D無所不能
日本的3d網站,承襲可愛的日本風格,非常值得一看
使用Flash away3d技術所做的第一人稱3d,畫面不錯
使用Flash Papervision3D ,神奇的瀏覽界面


Flex、Flash 開發工具介紹

0 意見

第一篇的blog文章,先介紹些開發工具吧,希望對大家有幫助

Flex Builder 3 + CFEclipse

不用多說了,官方標準的開發工具,基於 Eclipse 的 IDE 介面,提供了三個好用的 Perspective:Debugging、Development、Profiling,Debugging 能觀查值的變化,Profiling 能了解執行情形,Development 則是殺手級的 mxml 開發工具。
至於 CFEclipse則是 eclipse的 plug-in,可直接安裝在 Flex Builder上,完全免費且強大的輔助工具,其中 Snippets 可重覆產生冗長的程式碼,非常方便

官方試用版 http://www.adobe.com/products/flex/flexdownloads/#flex_builder
CFEclipse http://www.cfeclipse.org/

flex.jpg


Flash Develop

完全免費的 Flex SDK開發工具,需安裝 .Net Framework,支援 mxml、Actionscript3、Actionscript2語法 ,同樣有專案方式管理,發佈是使用 SWFObject 做為SWF嵌入語法,比官方提供的 AC_OETags 好用許多,且有 GUI介面的 ASDoc工具(Actionscript Document Generator),除了沒有 mxml 的預覽畫面外,功能不比 Flex Builder 差,甚至某些部分比 Flex Builder 更好用,強烈推薦。
官方網站 http://www.flashdevelop.org/community/

fd3.jpg


Eclipse + Flex Plug-in(Zend + Flex Plug-in)

如果你跟我一樣有在寫 Java,那麼 Eclipse + Flex Plug-in 是相當方便的組合,只要核心是 Eclipse 3.3 以上的版本都能加裝 Flex Plug-in,能讓原本 Java的開發環境多了 Flex 專案的選項,且功能無一不缺,相當方便。如果你是 PHP 的開發者,Zend Studio + Flex Plug-in 也是一個不錯的選擇。
Eclipse http://www.eclipse.org/downloads/

p1.jpg


StarUML

一個很理想的 UML 繪製工具,重點是他能依 UML 自動產生程式碼,包含類別、繼承、function 及 property,相當方便。
相關教學 http://www.senocular.com/flash/tutorials/starumltoas3/


PSPad

好用的文字處理工具,雖不支援 Actionscript語法標示,但用來編輯 XML或 Javascript還是很方便,且能以16進位方式開啟檔案
官方網站 http://www.pspad.com/en/


Notepad ++

廣為人知的文字處理工具,有了這個你就會知道 notepad 有多陽春了,支援 Actionscript 語法標示且有巨集等多樣功能
官方網站 http://notepad-plus.sourceforge.net/tw/site.htm


intype

一樣是文字編輯工具,目前還是 Alpha版,但有許多有趣的功能,有興趣的人可以看看官網的簡介
官方網站 http://intype.info/home/index.php