blog.Ring.idv.tw

2007 July

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

最後搞懂你的「_parent」目標位置

「parent」,字面上可以解讀為「父親/母親」的意思,所以顧名思義,「_parent」便是意指為你目前所處在於此實體的上一層實體(父親/母親),也就是說,我們可以利用「_parent」來控制上一層實體的種種行為,例如:改變它的「_x」和「_y」屬性值或呼叫它所提供的函數等。

這裡我們將「Target Path」命中你的目標實體(二)的範例加以修改一下,直接將「red」和「green」的Frame[1]改寫成:

trace(this._parent);

結果:

_level0
_level0.red

從結果中可以明確地知道,在「green」的上一層實體為「red」(_level0.red),而在「red」的上一層實體則為「_level0」,這也就是「_parent」的作用所在,或許讀者會覺得這樣一路下來感覺好像沒什麼多大的成就感,然而明確地了解這幾個屬性的用法並釐清觀念,才能為接下來要闡述的東西打好根基。

「Target Path」目標路徑的區隔「.」(dot)

通常我們要區分目錄夾的層級時,我們可以利用「\」符號來判別,例如:「C:\windows\temp」,倘若是要區分網址的層級時,我們便可利用「/」符號來加以判斷,例如:「http://blog.ring.idv.tw/temp/test.html」,然而在Flash要區分層層的元件結構,則必須採用「.」(dot)符號來加以區隔,例如:「_level0.red.green」。

範例下載

2007-07-02 21:05:20 | Add Comment

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

再搞懂你的「this」目標位置

「this」,字面上可以解讀為「這個」或是「這東西」的意思,所以顧名思義,「this」便是意指為你目前所處在於此實體的這東西,然而從「Target Path」命中你的目標實體(一)我們已知「_root」所指的就是處於「_level0」這個「MovieClip」,倘若我們在此「MovieClip」為它加上「this」,所以如果沒意外的話,那它應當也是代表著「_level0」囉?答案更是肯定!

trace(targetPath(this));
trace(this); //此作法較簡潔

結果:

_level0
_level0

結果如同我們所預期的顯示出「_level0」,或許上述的例子過於簡單,我們再來看一個稍為有點結構的例子:

範例:

我們先在Stage上放置一個紅色矩形的「MovieClip」,並在此「MovieClip」再放置一個綠色圓形的「MovieClip」,並給予兩者分別為「red」、「green」的實體名稱(instance name),結構如下圖所示:

並分別在這兩個「MovieClip」的Frame[1]寫下:

trace(this);

結果:

_level0.red
_level0.red.green

結果就像筆者先前所說的,基本上我們其實大多都在「_level0」活動活動筋骨而已,加上「_root」所指的就是「_level0」,所以這裡的「_level0」也代表著「根」的意思,也就是說,我們放置在Stage上的「red」和「green」這兩個「MovieClip」,它們的「根」也就是「_level0」,這從結果中可以清楚地知道,然而重點在於我們在這兩個「MovieClip」所寫的程式,它們分別呈現為「_level0.red」和「_level0.red.green」,不僅分別對應我們放置在Stage上的結構順序,也呼應「this」這個屬性的意義。

範例下載

2007-07-02 19:29:01 | Add Comment

「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

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

::: 搜尋 :::

::: 分類 :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment