blog.Ring.idv.tw

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

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


在一系列的「Target Path」命中你的目標實體()所曾提及過的「_root」、「_parent」和「this」,在本文中我們將配合著這些觀念來加以活用。

「_root」絕對路徑 vs. 「_parent」相對路徑

這裡我們設計一個簡單的範例來說明,我們在Stage上放置兩個「MovieClip」,一個名為「red_mc」的紅色矩形,另一個為「blue_mc」的藍色矩形,並在「red_mc」裡面附上一個「Button」,同時為此「Button」寫入下述程式:

on(release)
{
	trace(this);
}

結果:

_level0.red_mc

從結果中我們可以發現,寫在「Button」上的「on」事件處理程式,「this」所參考到的是此「Button」所處在的「MovieClip」(red_mc)而非此「Button」本身,這是因為「this」只能參考到一個「Object」或是一個「MovieClip」,反之寫在「MovieClip」上的「on」事件處理程式,便是參考到此「MovieClip」本身。

接著我們再將上述程式加點額外的控制,假設我們想在此「Button」上控制一個處在於Stage上的「blue_mc」,並將它的透明值改為50%,我們其實可以利用「_root」或是「_parent」的寫法:

相對路徑的寫法

on(release)
{
	_parent.blue_mc._alpha = 50;
}

絕對路徑的寫法

on(release)
{
	_root.blue_mc._alpha = 50;
}

上述兩種寫法都可以達到同樣的作用,一個是從元件內部往上一層實體去達成,另一個則是直接從「_root」實體去控制,倘若遇到較多層結構的寫法時,例如:「_parent._parent._parent.blue_mc.alpha = 50;」和「_root.blue_mc._alpha = 50;」,兩者相形之下,若不考慮元件間的相依性,絕對路徑的寫法相較而言簡潔了許多,當然這兩種寫法均仰賴著設計者如何去取捨,。

「_root」和「_parent」的取捨

無論使用「_root」或「_parent」的確都可達到相同的作用,那該如何去取捨這兩種用法呢?筆者建議你採用「高內聚力(High Cohesion)、低耦合力(Low Coupling)」的設計準則來加以取捨,因為使用「_parent」的作法,必然會造成元件之間相依性的提高,所以若沒有適當地切割元件與元件間的相依性,那往往會造成「牽一髮而動全身」的情況發生,採用此設計準則無非是希望元件能更具有彈性與獨立性。

範例下載

2007-07-02 22:40:33

Leave a Comment

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

::: 搜尋 :::

::: 分類 :::

::: Ads :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment