顯示具有 ActionScript 標籤的文章。 顯示所有文章
顯示具有 ActionScript 標籤的文章。 顯示所有文章

2008年12月13日 星期六

《 AS3 》讀取 XML Object 筆記

紀錄  ActionScript 3.0 Cookbook 的程式碼

將自己覺得重要以及常用的十項寫在下面,看看能不能用這些處理些啥事

1. Using Variables
    var username:String = "Bernie";
    var score:int = 1000;
    var example:XML = <gamescore>
                          <username>{username}</username>
                          <score>{score}</score>
                      <gamescore>

2. Using Variables by String
    var str:String = "<gamescore><username>"+username+"</username><score>"+score+"</score><gamescore>"
    var example:XML = new XML(str);

3. Adding Elements to an XML Object
    var example:XML = <example/>;
    example.two = " ";
    example = example.insertChildBefore(example.two, <one/>);
    example = example.insertChildAfter(example.two, <three/>);
    trace(example);

4.Adding Text Nodes to an XML Object
    var example:XML = <example/>;
    // <firstname>Bernie</firstname>
    example.firstname = "Bernie";
    // <test>A,B,C</test>
    example.test = ["A", "B", "C"];

5. Adding Attributes to an XML Element (@ operator)
    var example:XML = <example><someElement/></example>;
    example.someElement.@number = 12.3;
    example.someElement.@string = "example";
    /*
    <example>
        <someelement number="12.3" string="example"/>
    </example>
    */
    trace(example);

##CONTINUE##

6. Reading Elements in an XML Tree
    ar menu:XML = //....pass!
    
    // 多層的Tag(在此為label名稱之Tag)屬性質
    function walk(node:XML):void
    {
        for each(var element:XML in node.elements())
        {
            trace(element.@label);
            walk(element);
        }
    }

7. Finding Elements by Name
    items.items[0].name; // 'name'為Tag名稱
    items.items[1].name;
    book.title.toString(); // 'title'為Tag名稱

8.Removing Elements, Text Nodes, Attributes-1
    var example:XML = 
        <example>
            <fruit color="Red">A</fruit>
            <vegetable color="Green">B</vegetable>
            <dairy color="white">C</dairy>
        </example>;
    delete example.fruit.@color;
    delete example.dairy;
    delete example.vegetable.text()[0];
    /*
    <example>
        <vegetable/>
    </example>
    */
    trace(example);

9.Removing Elements, Text Nodes, Attributes-2
    var example:XML = 
        <example>
            <fruit color="Red" name=Apple"/>
        </example>;
    var attributes:XMLList = example.fruit.@*;
    for(var i:int = attributes.length()-1;i>=0;i--)
    {
        delete attributes[i];
    }
    /*
    <example>
        <fruit/>
    </example>
    */
    trace(example);

10. Loading XML
var loader:URLLoader = new URLLoader();
    loader.dadaFormat = DataFormat.TEXT;
    loader.addEventListener(Event.COMPLETE,handleComplete);
    loader.load(new URLReguest("example.xml"));

    private function handleComplete(event:Event):void
    {
        try{
            var example:XML = new XML(event.target.data);
            trace(example);
        }catch(e:TypeError){
            trace("Couldn't ....");
            trace(e.message);
        }
    }

也好久沒有更新文章了,除了忙推甄之外,專題亦是不可開銷啊!
加緊唸書比較實在,而且唸書或者是實做才會有心得可以放上來呀。

2008年10月7日 星期二

《 AS3 》Alternativa3D 安裝與配置

官方網站
http://alternativaplatform.com/en/

官方文件網頁
http://docs.alternativaplatform.com/dashboard.action

1. 下載
        註冊之後,觀看合約即可下載
        取得 Flash  組件檔案(.swc for 9 & 10)
        用此製作的程式,無法/嚴禁商業使用

2. 安裝與配置
        環境配置官方網站說明
             http://docs.alternativaplatform.com/display/TDEN/Connecting+library
      
        示範(Flash CS3)
            (1) 複製 全部的 .swc 到 C: \ Documents and Settings \ {username} \ Local Settings \ Application Data \ Adobe \ Flash CS3 \ en \ Configuration \ Components \.
            (2) 打開FlashCS3 IDE,將組件視窗打開,拉入元件庫即可。
 
        
3.範例測試
    官方的文件
    http://docs.alternativaplatform.com/display/TDEN/Hello%2C+Alternativa3D

    轉貼程式碼:
package {
import alternativa.engine3d.controllers.CameraController;
import alternativa.engine3d.core.Camera3D;
import alternativa.engine3d.core.Object3D;
import alternativa.engine3d.core.Scene3D;
import alternativa.engine3d.display.View;
import alternativa.engine3d.materials.WireMaterial;
import alternativa.engine3d.primitives.Box;
import alternativa.utils.FPS;

import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;

[SWF(backgroundColor="#000000", frameRate="100")]

public class HelloAlternativa3D extends Sprite {

private var scene:Scene3D;
private var view:View;
private var camera:Camera3D;
private var cameraController:CameraController;
private var box:Box;

public function HelloAlternativa3D() {
addEventListener(Event.ADDED_TO_STAGE, init);
}

public function init(e:Event): void {
removeEventListener(Event.ADDED_TO_STAGE, init);

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

// Creating scene
scene = new Scene3D();
scene.root = new Object3D();
box = new Box(100, 100, 100, 3, 3, 3);
box.cloneMaterialToAllSurfaces(new WireMaterial(1, 0xFFFFFF));
scene.root.addChild(box);

// Adding camera and view
camera = new Camera3D();
camera.x = 100;
camera.y = -150;
camera.z = 100;
scene.root.addChild(camera);

view = new View();
addChild(view);
view.camera = camera;

// Connecting camera controller
cameraController = new CameraController(stage);
cameraController.camera = camera;
cameraController.setDefaultBindings();
cameraController.checkCollisions = true;
cameraController.collisionRadius = 20;
cameraController.lookAt(box.coords);
cameraController.controlsEnabled = true;

// FPS display launch
FPS.init(stage);

stage.addEventListener(Event.RESIZE, onResize);
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
onResize(null);
}

private function onResize(e:Event):void {
view.width = stage.stageWidth;
view.height = stage.stageHeight;
}

private function onEnterFrame(e:Event):void {
// User input processing
cameraController.processInput();
// Scene calculating
scene.calculate();
}
}
}

將背景設為暗色,就會發現成功囉 :D

參考來源:
【Alternativa3D】我的第一个DEMO

2008年8月30日 星期六

《 AS3 》Papervision3D using BasicView

PV3D 建立場景還要放入那麼多變數多麻煩

參考 BasicView.as 建構子


// 這是它幫我們搞定的pv3d物件
scene = new Scene3D();
viewport = new Viewport3D(viewportWidth, viewportHeight, scaleToStage,interactive);
addChild(viewport);
renderer = new BasicRenderEngine();

// 攝影機型態,預設是 Target
switch(cameraType)
{
case CameraType.DEBUG:
_camera = new DebugCamera3D(viewport);
break;
case CameraType.TARGET:
_camera = new Camera3D(60);
_camera.target = DisplayObject3D.ZERO;
break;
case CameraType.FREE:
default:
_camera = new Camera3D(60);
break;
}


如何使用 BasicView


// 產生物件
basicView = new BasicView(800, 600, false, false);

// 添增
addChild(basicView);

// 叫 BasicView 的 pv3d 變數,用 '.' 即可
basicView.camera.z = -500;

// 最後,每次更新場景一定要呼叫的函式
basicView.singleRender();


基本上,差距大約 10 多行程式碼而已(包含 import)
如果不嫌棄打字的話呢,就多打這些是ok的啦!

快速Demo展示東西的話,BasicView 應該會更方便優 :)

2008年6月22日 星期日

《 AS3 》Flash Panorama Game with Papervision3D

前陣子裝了 Papervision3D 來玩看看
當時連 ActionScript 都不知道是啥,就硬是要整合在一起做出一些作品


作品內含物:
  1. ActionScript 3.0
  2. Papervision3D 2.0 Great White
  3. AsWing
  4. Adobe FlashCS3
  5. Panorama Tech.
其他成份:
  1. 故事大綱
  2. 物件互動設計
參考來源:

在網路上搜啊搜著的找到這個 QTVR Like Panorama with Flash and Papervision3D for NBC and The Office 和我們想呈現的效果雷同,於是大致上看了一下此篇大作。

後記:

用 FlashCS3 為 IDE,組合 AS3 與 PV3D 和 AsWing。物件互動的設計皆利用 MovieClip去繪製,再添加到平面的場景,由於平面和三維的場景可以互相搭配,以至於整個 Project 的核心在於物件互動的對話和程式之中,PV3D 這大咖的傢伙僅用到環景,互動物件平面,滑鼠控制等。用這個 Project 入門瞭解 3D Scence 的應用可能性,算是對我們一個好的方式。

還需要再看多一點 API 並自己亂 Try 才會作特殊的效果 :XD

2008年4月19日 星期六

《 Adobe 》Prepare to be a Flasher

Flash 和 ActionScript 對我來說都是剛開啟起步而已

整理了一下我認為玩好 Flash 需要的幾個技巧和工具:

  1. SWFObject: Javascript Flash Player detection and embed script
    • 官方網站:http://blog.deconcept.com/swfobject/
    • 我記得曾經用過這個 JavaScript 來裝 SWF,現在雖然找不到那作品。好東西當然要分享啦,況且在James' fantasy 的部落格文章中看到說 IE ActiveX 有啥米技術問題存在著,看來這 code 會對 Flasher有很大的幫助喔!
    • 使用說明:在網頁裡面輸入這些喔,不要忘記加一個<div id="flashcontent"></div>給 JavaScript 中的Flash使用捏~


      <script type="text/javascript" src="swfobject.js"></script>

      <div id="flashcontent">
      This text is replaced by the Flash movie.
      </div>

      <script type="text/javascript">
      var so = new SWFObject("movie.swf", "mymovie", "400", "200", "8", "#336699");
      so.write("flashcontent");
      </script>


  2. Sothink SWF Decompiler
    • 官方網站:http://www.sothink.com/product/flashdecompiler/download.htm
    • 說明:可以將 SWF 轉成 FLA,至於其他用法我就不清楚了,但是如果要把 ActionScript 也轉出來,可能不行的樣子,至少我試了的結果是如此,可能還要在觀察一下喔。
    • 我記得神魂顛倒是個正當的大站,但是出現了這個文章可以下載這軟體(可能要小聲的說吧!不然會被 OOXX.....)
  3. OOP Languages
    • 對於學過物件導向語言的人來說,可以馬上進入狀況,這點我到是蠻喜歡的耶,雖然我不是學的很好,但是 Flash 跟網頁一樣"所見即所的"效果,讓我想要墮入他的愛河(咦,我回高雄了啊?哈哈 :) )
    • 因為 Adobe Flash CS3 和 ActionScript 語言的進化,使得程式人可以掌握更深,美工者可能就開始卻步,不怎麼準啦,因為每個人不一樣咩,努力就好啦。

最近沒發什麼文章,潛在 Flash 3D Engine 的懷抱中,改天一定要打筆記給打來。另外,我還要去加強美工的技巧,嗚嗚....對我來說有點難度

希望下一篇會是 ActionScript 成果分享,上次說得 YWE 已經轉換戰場了,我想應該是暫停研究吧,等轉戰到 RIA 之時在一起拿出來玩玩看囉。