• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>AS基础篇>AS 3.0>文章内容
  • AS3最in的写法
  • 来源:http://ria.richtechmedia.com/ 作者:d.CAT 2008-01-12 【

Well, ok, pun intended.

問題:
你想知道在某個物件(假設是 btn )中是否有一個名為 ‘title’ 的屬性,該怎麼做?

解法:

基本上這個問題有很多種可能解法,常見的有

1、用 try/catch block 去探測 if( btn[’title’] ) 如果回傳 false 就知道不存在

2、用 describeType 之類的 object utility 透過 reflection 知道物件的結構

但這種做法各有不同的爛法。

第1種做法會讓程式碼變的很不優雅,要一大堆 try/catch block。
第2種做法更麻煩,只為了找一個屬性,要把全部的東西都 dump 出來。

正解:

前幾天在翻 air 的 source code,意外發現下面這種寫法

if( ‘title’ in btn ){…}

他/她 直接用 in 就可以探測出 btn 中是否有某個物件,而且不需要 try/catch。

以往 in 都是用在 for in loop這樣的情境中,從來不知道也可以這樣玩,所以當初一看到可真是驚為天人。

後來翻了一下手冊才發現在 language elements 那章就明明白白有講啊,是自已白目沒認真看…

後記:

這件事告讓我們,沒事多讀 framework source code 絕對好處多多,每次我在看的時後,都覺得就在跟 adobe 的工程師對話,邊看邊想像他寫作時腦中的思路,為何他要做這個決定?為何這樣設計?為何寫這段code ?他有試過其它的方式嗎?是不有有其它限制?

不過看 code 也是要有技巧的,不是直接從第一行看到尾,這樣很容易入寶山還是空手回,比較好的方式是先有一個目標,然後進去挖,再搭配一些小技巧,收穫就會比較多(而且比較有效率…)。




上一篇:MinimalComps 组件source下载   下一篇:As3 onReleaseOutside
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)