blog.Ring.idv.tw

Flash

「Target Path」命中你的目標實體(一)

在本文中,主要將說明「_root」、「_parent」和「this」這些用法及概念,讓你得以自由地操控「MovieClip」、「Button」等…,才不致於在層層的元件內繞來繞去,找不到該在何處下程式,或是寫在不該寫的地方。

先搞懂你的「_root」目標位置

「Layer」、「Level」和「Depth」之間的三角關係(四)一文中,筆者曾繪製一個Flash Player內部運作的Level、Depth示意圖,從圖中可以知道「Level」和「Depth」之間的關係,然而基本上我們其實大多都在「_level0」活動活動筋骨,難道「_root」和「_level0」有點關係?答案是肯定的!

我們來看一下這個簡單的程式:

trace(targetPath(_root));
trace(typeof(_root));

結果:

_level0
movieclip

「targetPath」這個函數可以用來回傳所指定實體的目標路徑,所以從上述的結果即可證明「_root」所指的就是「_level0」這個「MovieClip」,若從字面上來解讀它的話,那它就是代表著「根」的意思,所以既然它是一個「MovieClip」,我們當然可以放置層層的元件在其中囉!

2007-07-02 18:29:45 | Add Comment

變數範圍-一個獨立於Flash Player中的物件「_global」(全域變數)

根據「ActionScript 2.0 Language Reference」在「_global」的描述中,我們可以知道它是在「Flash Player 6」之後出來的產物,這裡我們就來談談「全域變數」~

一個獨立於Flash Player中的物件「_global」

通常設定一個「全域變數」的變數或是函數的話,基本上用法大致如下:

程式一

_global.foo = 10;
_global.func = function()
{
	trace(this.foo);
}
func();

結果:

10

在上述程式的「func」匿名函數中,我們使用「this」來代表我們將存取此「_global」自身的一些屬性,而從結果中我們的確將「foo」屬性利用「trace」函數將它的值顯示在「Output Panel」中,接著我們再來看另一個例子:

trace(typeof(_global));

結果:

object

在「Output Panel」你會發現結果顯示出「_global」居然是一個物件?的確!Flash Player所設計的「全域變數」的確就是仰賴「_global」物件來加以達成的!

倘若我們將程式一利用「偵錯模式(Ctrl+Shift+Enter)」來看的話,你會發現下圖的證據所在:

2007-06-30 22:23:53 | Add Comment

變數範圍-在「Function」上用「var」來宣告變數的差異(三)

在「變數範圍-在「Function」上用「var」來宣告變數的差異(一)」一文中,我們曾提及在「Function」加上「var」宣告,才是明確的定義此變數為「區域變數」,否則便是「實體(時間軸)變數」,倘若我們少打了「var」來宣告的話,那會造成多大的影響呢?這裡我們就來比較一下兩者間的執行速度。

存取「區域變數」遠比「實體(時間軸)變數」快

區域變數

function test()
{
	var i = 10;
	for(var j = 0 ; j < 100000; j++)
	{
		i+=j;
	}
}
var start = getTimer();
test();
trace(getTimer()-start);

結果:(取決於電腦速度而有所不一)

114

實體(時間軸)變數

function test()
{
	i = 10;
	for(var j = 0 ; j < 100000; j++)
	{
		i+=j;
	}
}
var start = getTimer();
test();
trace(getTimer()-start);

結果:(取決於電腦速度而有所不一)

233

從結果來看,由於區域變數會使用到Flash Player內部所提供的暫存器來儲存之,造成兩者在上述的範例測試中,執行速度差距有二倍之多(114ms vs. 233ms),所以不可不慎!~

2007-06-29 17:38:37 | Add Comment

變數範圍-「loadVariables」vs.「loadVariablesNum」

想要從Flash載入外部資料,其實有許多樣的方式可以善加利用,譬如:「loadVariables」、「LoadVars」、「XML」等…

然而這些從外部載入進來的資料,必然有其自己所屬的變數範圍,所以本文將探討「loadVariables」vs.「loadVariablesNum」兩者的差異~

「loadVariables」vs.「loadVariablesNum」的差異

ActionScript 2.0 Language Reference的文件說明中,我們大概即可得知兩者間的不同,整理如下:

Global Function

loadVariables(url:String, target:Object, [method:String]) : Void

loadVariablesNum(url:String, level:Number, [method:String]) : Void

MovieClip Method

loadVariables(url:String, [method:String]) : Void

從上述我們可以知道「loadVariablesNum」是「Global Function」,而「loadVariables」則有「Global Function」和「MovieClip Method」兩種,接著我們再來推論載入的方式。

「_root == this」&「this == _level0」&「_level0 == _root」

請將下述程式寫在Frame[1]:

trace(_root == this);
trace(this == _level0);
trace(_level0 == _root);

結果為:

true
true
true

從結果即可證明「_level0」、「_root」和「this」三者之間都是指向同一個「MovieClip」,所以我們即可推論下述的載入方式都是相同的:

loadVariablesNum("test.txt",0);
loadVariables("test.txt",_level0); //Global Function
loadVariables("test.txt",this); //Global Function
loadVariables("test.txt",_root); //Global Function
_level0.loadVariables("test.txt"); //MovieClip Method
this.loadVariables("test.txt"); //MovieClip Method
_root.loadVariables("test.txt"); //MovieClip Method

為何需要「loadVariablesNum」

從上述的論點再來推測,我們是否可以直接執行「loadVariables("test.txt",_level1)」或「_level1.loadVariables("test.txt")」來取代「loadVariablesNum」呢?

答案是「否定的」~為何如此?我們來看下述這個範例:

trace(typeof(_level0));
trace(typeof(_level1));

結果:

movieclip
undefined

從上述的結果來看,「_level0」這個「MovieClip」早就存在於Flash Player裡頭了,然而「_level1」卻仍然尚未被定義的~

也就是說執行「loadVariables("test.txt",_level1)」或「_level1.loadVariables("test.txt")」,並不會為我們在「_level1」建立一個「MovieClip」,我們必須利用「loadVariablesNum("test.txt",1)」才行!!所以無論是「loadVariables」或「loadVariablesNum」,它們的變數範圍其實都隸屬於實體(時間軸)變數

最後只要了解「Layer」、「Level」和「Depth」之間的三角關係(四),以及本文所推論及驗證的一些觀念,相信你一定可以自由運用「loadVariables」和「loadVariablesNum」。

2007-06-23 17:28:52 | Add Comment

Installing Flash Lite 2.1 on Nokia N73 & N70

圖片來源:http://mobilesearch.nokia.com

Flash Lite簡易安裝步驟

Step 1.下載Flash Lite 2.1 for Symbian(請下載Flash Lite 2.1 Standalone Player for Symbian S60 V3.0)

Step 2.將flashlite2_1_symbian_s60V3.SIS傳至你的手機,接著直接點選安裝即可。

用「handset_test」來測試它一下:

不支援的部份:

hasAccessibility
hasAudioEncoder
hasCMIDI
hasMFI
hasMouse
hasPrinting
hasScreenBroadcast
hasScreenPlayback
hasSMAF
hasStreamingAudio
hasStreamingVideo
hasStylus
hasVideoEncoder

ImageMIMETypes:

image/jpeg,image/png,image/gif

VideoMIMETypes:

video/3gpp,video/mp4

手機王「Nokia N73」詳細規格

2007-06-21 13:37:54 | Add Comment

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

::: 搜尋 :::

::: 分類 :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment