Feed Rss



31 2010

纬度网Flash交流会

category: 未分类 author: ziv

活动在线报名地址:http://www.wedoswf.com/events/1

主讲者和专题介绍

Adobe 平台技术
主讲人:Gary Zhu – Adobe 平台技术总监
Gary 多年工作于 Adobe 公司工作,从事软件产品和平台技术的发展与推广工作。此次Gary远道而来,将为我们介绍 Adobe 平台技术的发展和Flash移动应用软件的开发。

程序接口的另类理解与使用
主讲人:孙毅
曾就职五分钟,任Flash部门主管,并开发《绿豆蛙—漂流岛社区》等项目;现就职八方视界,任Flash部门高级主管,并负责其产品《唯智学园》Flash部分主程,以及Flash性能等各方面研究。
孙毅的博客:http://www.xiaos8.com

Flash Media Server 开发经验谈
主讲人:沈先彬
从事FLASH 游戏与AIR应用开发,参与开发项目有 梦境世界 三十六计等,目前在开发WEBGAME。
沈先彬的博客:http://blog.sina.com.cn/shenxianbin

Flash RIA的可用性
主讲人:刘轩飞
晒台网首席产品管,10年前端设计和开发经验,信仰互联网,以提供最佳互联网用户体验为己任
刘轩飞的博客:http://www.xuanfei.me

麻球大赛优秀作品介绍
主讲人:廖湘宁
廖湘宁多年来从事视频互动创意与游戏开发,目前在麻球网担任开发者社区经理,负责麻球网(Mochi Media)平台的本土化研发与推广工作。
廖湘宁的博客: http://www.xncat.com

麻球参赛游戏蛛蛛冒险的开发与设计经验分享
主讲人:徐黎明
曾任TCL教育互联 研发主管,广州市远程教育中心 开发主管。涉足麻球平台之后,钟情于游戏开发,创办Tinime 工作室。

麻球参赛游戏DNF,梦幻塔防,吖凡哒哒技术与美工经验分享
主讲人:商文烨
中国第三代闪客,个人作品获得过无数奖项并在中央电视台播出,06年担任搜狐17173频道主管并连续4年获得搜狐最佳称号,2009年成立传奇网科,旗下传动力工作室便是当今最脍炙人口的休闲小游戏开发团队!
商文烨的博客: http://t.qq.com/shangwenye

议程安排

2010年9月18日 星期六

12:30 ~ 13:00 参会人员签到,入场
13:15 ~ 15:00 主题讨论
15:00 ~ 15:15 茶歇和聊天
15:15 ~ 17:30 主题讨论
18:00 技术交流和讨论
抽奖活动

为感谢大家对活动的关注与支持,本次活动特设精美礼品抽奖赠送。

会议地点

畅星大厦•上海
地址:上海浦东新区碧波路888号畅星大厦3楼会议厅
电话:021-38984558
网站:http://www.changxing.sh.cn
交通:地铁2号线张江站(步行5-10分钟即到),161

>> 在 Google 地图上查看


10 2010

Objective-C 学习笔记(2)-认识一下

category: Objective-C author: ziv

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
NSLog(@”Hello, Objective-C!”);

return (0);
} //main

OK, 这是一个Hello World 程序, :) . 是不是和C语言风格很像, 这就对了, 毕竟Objetive-C扩展自C, 延用了C的很多特性.
那么这几行代码怎么解读呢, 先看第一行,
#import
#import 语句是不是很熟习, 这就对了. 和Flash里一样, 也是实现导入功能. 如果你需要实现一些功能, 那么你必须先导入实现了功能的待定文件.
前面不是说Objective-C扩展自C么, 为什么不用 #include 来操作呢? 这个当然没问题, 不过用 #include 来包含文件他不会检查文件的重复导入, 但#import可以自动帮你完成这个工作.
第二行:
int main(int argc, const char * argv[])
这里是一个函数定义. 为什么是main, 注意, 在C语言里, main是整个程序的入口, 也就是说, 你的Objective-C程序中必须有一个名为main的函数定义, 这样程序才会正常运行.
位于 main 之前的 int 标识这个函数的返回数据类型为 int 型, 小括号内的两个变量定义则为main函数接受的参数.
在Obective-C中, 所有类型声明都是前置的, 同时, 如果类型声明中带有一个星号, 则表示这是个Objective-C的数据类型(在Objective-C 中, C可以和Objective-C共存)
第三行:
NSLog(@"Hello, Objective-C!");
NSLog用来向控制台输出信息, 这样便于我们DEBUG或监视程序流程等. NSLog 是由Objective-C定义的一个全局方法. 所有由Objective-C扩展的实现的方法,数据类型都以 NS 开头.
同时请注意本行代码中字串的定义是以一个@符号开始的, 这个定义不同于仅以引号包围起来的C字串定义, @符号清楚的表明这是一个 Cocoa 字串.
第四行, 这行就简单了, 返回一个int型数据. 程序也就在此结束了.


14 2010

objective-c 学习笔记(1)

category: Objective-C author: ziv

写在最前面, 本学习笔记基于 Objective-C 2.0

基本常识

  • objective-c 是一种弱类型语言, 一些错误是被允许的. 比如对一个空对象调用根本不存在的方法/属性.
  • objective-c 是一种面向对象的语言
  • objective-c 是 C 语言的简单扩充. 什么意思呢? 就是如果你有C或C++定义好的资源库, 你可以直接使用!
  • 用 objective-c 写的程序学术上应该叫做 Cocoa 应用程序
  • objective-c 的类可以继承
  • objective-c 的类不支持多重继承
  • objective-c 创建类习惯定义好接口(.h文件)

17 2010

初识 Google Map – google map 系列(一)

category: Action Script 3, ActionScript author: ziv

因项目需要, 特来学习一下 GoogleMap for Flash, 感受 G 神带给我们的超爽体验.

内容简单, 就直接上代码了:

package {
	import com.google.maps.LatLng;
	import com.google.maps.Map;
	import com.google.maps.MapEvent;
	import com.google.maps.MapOptions;
	import com.google.maps.MapType;
	import com.google.maps.View;
	import com.google.maps.controls.NavigationControl;
	import com.google.maps.geom.Attitude;

	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;	

	/**
	 * @Class:           GoogleMapSample
	 * @Author:          ziv.yuan(ziv.yuan@gmail.com)
	 * @Version:         ver 1.0
	 * @Create Date:     2010-3-16
	 * @Last Modify:     2010-3-16
	 * @Describe:
	 *
	 * @Usage:
	 *
	 */
	public class GoogleMapSample extends Sprite {
		private var _gmap:Map;

		public function GoogleMapSample() {
			//创建并添加地图到显示列表
			_gmap = _createMap();
			addChild(_gmap);
		}

		private function _createMap():Map {
			var gmap:Map = new Map();
			// or 创建一个 3D 地图
			//_gmap = new Map3D();
			gmap.key = "your_api_key";
			//设置地图大小为舞台大小
			gmap.setSize(new Point(stage.stageWidth, stage.stageHeight));
			//添加事件处理器.
			gmap.addEventListener(MapEvent.MAP_PREINITIALIZE, onMapPreinitial);
			gmap.addEventListener(MapEvent.MAP_READY, onMapReady);
			return gmap;
		}

		/*
		 * 配置地图
		 *
		 * 这个过程一定要在 MapEvent.MAP_READY 事件之前做完
		 *
		 */
		private function onMapPreinitial(event:MapEvent):void {
			//创建地图设置实例
			var myMapOptions:MapOptions = new MapOptions();
			//设置缩放系数
			myMapOptions.zoom = 12;
			//设置地图中心点
			myMapOptions.center = new LatLng(31.230124, 121.476989);
			//设置地图类型.
			//有三个选项
			myMapOptions.mapType = MapType.NORMAL_MAP_TYPE;
			//设置观察模式
			myMapOptions.viewMode = View.VIEWMODE_ORTHOGONAL;
			//设置观察点
			myMapOptions.attitude = new Attitude(20, 30, 0);
			//配置地图初始化实例
			_gmap.setInitOptions(myMapOptions);
		}

		/*
		 * 添加地图控制器
		 *
		 * 这个过程要等到 MapEvent.MAP_READY 事件触发后进行,
		 * 如果在这个事件之前尝试的话会引发 对象还没有初始化 的异常.
		 *
		 */
		private function onMapReady(event:Event):void {
			//添加导航控制器, 共有 6 种控制器可选
			_gmap.addControl(new NavigationControl());
		}
	}
}

tag:


13 2010

使用AS脚本获取函数名(2)

category: Action Script 3, ActionScript author: ziv

欲知前事如何, 请看: “如何使用AS脚本获取函数名”

今天这个方案, 全赖网友回复点醒了我. 直接来代码:

function getFunctionName(fun:Function):String{
	try{
		var k:Sprite = Sprite(fun);
	}catch(err:Error){
		var fn:String = err.message.replace(/.+\/(\w+)\(\)\}\@.+/,"$1");
		return fn==err.message?(err.message.replace(/.+ (function\-\d+) .+/i,"$1")):fn;
	}
	return null;
}

利用AS3的强制转换机制诱发错误, 然后从错误信息中提取函数名称.
这个方法完全避开了前面一篇文章谈到的需要考虑函数是否还参数, 函数参数如果是(…args)这样任意的情况. 而且也决不会有潜在的副作用.
当然这个也点瑕疵, 当处理无名函数的时候稍稍多一步. 对于无名函数, 得到的反馈是如下样式:

Error #1034: 强制转换类型失败:无法将 Function-5 转换为 flash.display.Sprite。

根据分析, 基本可以确定匿名函数在内部都会以 Function-5 的样式来命名(这个记得以前貌似不是这样的 – -), 所以对于匿名函数稍稍处理下也是可以正常获取的.

一宿没睡, 来个小品乐呵一下.

tag: ,


12 2010

[活动]免费参加第二期FLASH专家交流会,3月28日火热报名中!

category: 交流 author: ziv


活动主题:  新技术和开发经验

活动时间:  3月28日

活动地点: 上海 畅星大厦 (google map)

正在火热报名中!免费参加,座位有限,快来报名( SWFSH.COM)

话题介绍:

FLASH基于对象的优化技术

主讲人:盛大网络 黄炎中

黄炎中 盛大网络

职业生涯:

    • 05年进入盛大。
    • <疯狂赛车>主程;
    • <英雄连OL>主程;
    • <传世群英传网页版>WEBGAME用户体验设计师,项目经理,系统架构师。

FLASH PLAYER 多元件性能测试报告

主讲人:鞠海深

鞠海深

海底世界创始团队成员,前端核心开发人员。

Flash图像开发杂谈

主讲人:李明

李明

曾就职于中国MacroMedia总代Itom公司,和讯,盛大,数字鱼,微软等公司,做flash商业项目多年,对flash开发及结合传统语言开发有多年的研究,现是盛大18公司之一翼牛网络的创始人,开发盛大平台下的大型flash网页游戏。

Isometric位图引擎的构建

主讲人:史珉

史珉

将为大家讲述以下内容:
Display Object Node Tree与Event Bubbling ;
位图与MovieClip ;
遮挡与排序;
鼠标动作捕捉;
优化:Object Pool;如何减少排序及遮挡计算;寻径及四叉树;

Papervision3d开发流程及商业应用

主讲人:孙令纯

孙令纯

介绍Papervision3D (简称PV3D),PV3D是一套开源的3D应用,结合 ActionScript 3.0 的高效能,制作出更多更炫的FLASH 3D应用。在全球已有许多的知名网站运用此技术。演讲内容以范例为导向,着重于实际应用,让您在短时间内扎扎实实制作出每一个ActionScript程序。

AIR的数据缓存及数据绑定的列表操作模式

主讲人:徐哲

徐哲

Doit.im 创始人。
10多年企业应用开发经验。
专业以Java/Ruby/C++/AS3/JavaScript/Objective-C为主;业余爱好经济和哲学、历史。
Flex上主要应用有Doit.im, 路灯、电缆监控与防盗系统。
主要讲述在AIR开发中,我们怎么设计我们的客户端缓存系统,所谓列表操作模式即针对集合/列表的操作和操作的结果符合数据绑定的特性。


议程安排

2010年3月28日 星期日

  • 12:30 ~ 13:00 参会人员签到,入场
  • 13:00 ~ 15:00 主题讨论
  • 15:00 ~ 15:30 茶歇和聊天
  • 15:30 ~ 17:30 主题讨论
  • 18:00 技术交流和讨论

会议地点

畅星大厦上海

地址:上海浦东新区碧波路888号畅星大厦3楼会议厅
电话:021-38984558
网站:http://www.changxing.sh.cn/
交通:161,地铁2号线张江站(步行5-10分钟即到),提供免费泊车。

畅星大厦

畅星大厦

畅星大厦地图

畅星大厦地图

>> 在 Google 地图上查看

tag: , , ,


十二 18 2009

[转]可能被你忽略的 JavaScript 代码陷阱 – 岁月如歌

category: Javascript author: ziv

原文: 可能被你忽略的 JavaScript 代码陷阱 – 岁月如歌.

下面这段代码,你知道有哪些错误吗:

var g_bar = "bar";
function foo(container, config) {
    var container = container || document,
        name = config.name || "无名氏",
        isLive = config.isLive || true;

    var g_bar = g_bar || "";

    if(g_foo) {
        /* your code */
    }
}
foo(document, {isLive: false});

请仔细思考后再往下阅读。

—- 帮助你思考的刷屏线 开始 —-

—- 帮助你思考的刷屏线 结束 —-

1. isLive = config.isLive || true, 当传入的值有可能就是0, undefined, null, false, "", NaN这六个 falsy 值时,用 || 来设定默认值不妥当。更保险的做法是:

isLive = "isLive" in config ? config.isLive : true;

如果是独立变量,可以采用:

someVar = typeof someVar !== "undefined" ? someVar : defaultValue;

注意:大部分情况下,用 || 已经够用,比如:

container = container || document
name = config.name || "无名氏"

一切皆权衡。

2. var g_bar = g_bar || "", 原意是取全局变量 g_bar 的值给内部变量 g_bar, 默认为空字符串。然而,实际情况等价为:

var g_bar;
g_bar = g_bar || "";

很明显,|| 号左边的 g_bar 也是内部变量,并且为 undefined, 因此var g_bar = g_bar || ""实际上是var g_bar = "", 没有满足代码的原始意图。

思考:代码中的var container = container || document有无问题?为什么?

3. if(g_foo) { /* code */ }, 这段代码在执行时会报错。我们都知道在 JS 里,变量不定义就可以用。但一定要清楚,未定义的变量,仅仅是可写,但不可读。比如:

g_foo = 2; // 等价 window.g_foo = 2
var t = g_foo2; // 不等价为 var t = window.g_foo2, 会报错

具体原因可以参见 JavaScript 运行机制浅探

未定义变量意味着在 scriptObject 的变量表中找不到,JS 引擎会沿着 scriptObject 的 upvalue 往上寻找,如果都没找到,对于写操作 i = 1; 最后就会等价为 window.i = 1; 给 window 对象新增了一个属性。对于读操作,如果一直追溯到全局执行环境的 scriptObject 上都找不到,就会产生运行期错误。

因此严谨的写法是:

if(window.g_foo) {
    /* your code */
}

不要小看这些细微之处,有时会让人抓狂的。但这些细微之处又很容易被忽略或滥用。比如 YUI 2.8r4 里,有一个遗传了很久的 bug:

var NOTHING = [];
// ....
later: function(when, o, fn, data, periodic) {
    when = when || 0;
    o = o || {};
    var m = fn, d = data, f, r;
    // ...
    if (d && !L.isArray(d)) {
        d = [data];
    }

    f = function() {
        m.apply(o, d || NOTHING);
    };
    // ...
}

当你的调用代码类似Lang.later(delay[0], o, "show", index)时,如果 index 不幸是 base-0 的,那么取 0 时,m.apply(o, d || NOTHING)会让你得到“惊喜”。更妥的做法是类似 YUI3 中的修正:

// ...
if (!L.isArray(d)) {
    d = [data];
}?

f = function() {
    m.apply(o, d);
};
//...

对于 || 和 && 的用法,很多 JS 书籍(无论中外),都用来片面强调 JS 的灵活性,包括 Douglas 的《JavaScript The Good Parts》中也存在误导。

最后,有感于 NCZ 今天写的 Writing Maintainable Code, 再举一例(和本文主题关系不明显,但的确又有关系,交给你去思考啰):

var isBoy = true;
isBoy = typeof isGirl !== "undefined" ? !isGirl : true;

或者来个耍酷的代码:

var isBoy = true;
(typeof isGirl !== "undefined") && (isBoy =  !isGirl);

然而,以上两种写法,无论从代码长度还是性能上讲,都不如更直白的写法:

var isBoy = true;
if(typeof isGirl !== "undefined") isBoy =  !isGirl;

简单质朴,往往是最好的。


十二 10 2009

CSS中文字体对照表

category: HTML/CSS author: ziv

网上闲逛, 发现这么一个好东西:

中文名 英文名 Unicode Unicode 2
Mac OS
华文细黑 STHeiti Light [STXihei] \534E\6587\7EC6\9ED1 &#x534E;&#x6587;&#x7EC6;&#x9ED1;
华文黑体 STHeiti \534E\6587\9ED1\4F53 &#x534E;&#x6587;&#x9ED1;&#x4F53;
华文楷体 STKaiti \534E\6587\6977\4F53 &#x534E;&#x6587;&#x6977;&#x4F53;
华文宋体 STSong \534E\6587\5B8B\4F53 &#x534E;&#x6587;&#x5B8B;&#x4F53;
华文仿宋 STFangsong \534E\6587\4EFF\5B8B &#x534E;&#x6587;&#x4EFF;&#x5B8B;
丽黑 Pro LiHei Pro Medium \4E3D\9ED1 Pro &#x4E3D;&#x9ED1; Pro
丽宋 Pro LiSong Pro Light \4E3D\5B8B Pro &#x4E3D;&#x5B8B; Pro
标楷体 BiauKai \6807\6977\4F53 &#x6807;&#x6977;&#x4F53;
苹果丽中黑 Apple LiGothic Medium \82F9\679C\4E3D\4E2D\9ED1 &#x82F9;&#x679C;&#x4E3D;&#x4E2D;&#x9ED1;
苹果丽细宋 Apple LiSung Light \82F9\679C\4E3D\7EC6\5B8B &#x82F9;&#x679C;&#x4E3D;&#x7EC6;&#x5B8B;
Windows
新细明体 PMingLiU \65B0\7EC6\660E\4F53 &#x65B0;&#x7EC6;&#x660E;&#x4F53;
细明体 MingLiU \7EC6\660E\4F53 &#x7EC6;&#x660E;&#x4F53;
标楷体 DFKai-SB \6807\6977\4F53 &#x6807;&#x6977;&#x4F53;
黑体 SimHei \9ED1\4F53 &#x9ED1;&#x4F53;
宋体 SimSun \5B8B\4F53 &#x5B8B;&#x4F53;
新宋体 NSimSun \65B0\5B8B\4F53 &#x65B0;&#x5B8B;&#x4F53;
仿宋 FangSong \4EFF\5B8B &#x4EFF;&#x5B8B;
楷体 KaiTi \6977\4F53 &#x6977;&#x4F53;
仿宋_GB2312 FangSong_GB2312 \4EFF\5B8B_GB2312 &#x4EFF;&#x5B8B;_GB2312
楷体_GB2312 KaiTi_GB2312 \6977\4F53_GB2312 &#x6977;&#x4F53;_GB2312
微软正黑体 Microsoft JhengHei \5FAE\x8F6F\6B63\9ED1\4F53 &#x5FAE;&#x8F6F;&#x6B63;&#x9ED1;&#x4F53;
微软雅黑 Microsoft YaHei \5FAE\8F6F\96C5\9ED1 &#x5FAE;&#x8F6F;&#x96C5;&#x9ED1;
Office
隶书 LiSu \96B6\4E66 &#x96B6;&#x4E66;
幼圆 YouYuan \5E7C\5706 &#x5E7C;&#x5706;
华文细黑 STXihei \534E\6587\7EC6\9ED1 &#x534E;&#x6587;&#x7EC6;&#x9ED1;
华文楷体 STKaiti \534E\6587\6977\4F53 &#x534E;&#x6587;&#x6977;&#x4F53;
华文宋体 STSong \534E\6587\5B8B\4F53 &#x534E;&#x6587;&#x5B8B;&#x4F53;
华文中宋 STZhongsong \534E\6587\4E2D\5B8B &#x534E;&#x6587;&#x4E2D;&#x5B8B;
华文仿宋 STFangsong \534E\6587\4EFF\5B8B &#x534E;&#x6587;&#x4EFF;&#x5B8B;
方正舒体 FZShuTi \65B9\6B63\8212\4F53 &#x65B9;&#x6B63;&#x8212;&#x4F53;
方正姚体 FZYaoti \65B9\6B63\59DA\4F53 &#x65B9;&#x6B63;&#x59DA;&#x4F53;
华文彩云 STCaiyun \534E\6587\5F69\4E91 &#x534E;&#x6587;&#x5F69;&#x4E91;
华文琥珀 STHupo \534E\6587\7425\73C0 &#x534E;&#x6587;&#x7425;&#x73C0;
华文隶书 STLiti \534E\6587\96B6\4E66 &#x534E;&#x6587;&#x96B6;&#x4E66;
华文行楷 STXingkai \534E\6587\884C\6977 &#x534E;&#x6587;&#x884C;&#x6977;
华文新魏 STXinwei \534E\6587\65B0\9B4F &#x534E;&#x6587;&#x65B0;&#x9B4F;

tag:


十一 28 2009

PNG透明校正插件修正版

category: HTML/CSS, Javascript author: ziv

相信做前端的都知道 IE6 的痛处, PNG图片不支持是让人心痛的事.  好在我们还有 基于 jQuery 一个插件 ipngfix.

ipngfix 用下来发现这个插件对隐藏了的图片不能正确的获取宽度, 导致图片不能正常呈现. 原因在于 ipngfix 使用了 jQuery 的 width() 和 height() 方法法获取对象尺寸. 这两个方法貌似对父级设置了display:none 的对像不感冒 – -, 官方也没有说明什么原因. 好在经过几分钟折腾, 用CSS属性解决了这个问题.

以下是修改过的代码:  jquery.ipngfix.rar

tag: ,


27 2009

事件流引起的那点事儿

category: 未分类 author: ziv

在群里有人问了个问题:
为什么我把父剪辑的 mouseEnabled 设置为 false 但父剪辑还是可以侦听到 鼠标事件?

很有意思的一个问题,不是么!

AS3 里使用了事件流机制。简单说来一个完整的事件流应该从 Flash Player 到目标然后再回到 Flash Player。我们用一个简单的例子看看如何描述这个问题。

假如有如下结构的SWF文件,场景里有一个MovieClip(以下简称MC) A,A 里面包含一个名为 B 的MC,B 里面又包含 MC D。 有些复杂了,还是画个简单的图吧。
|-stage
..|-A
….|-B
……|-D

然后我们假设 D 触发了CLICK 事件,那么事件流程应该是:

stage  ->  A  ->  B  -> D  ->  B  ->  A  -> stage

这里有几个定义, 先看这一段:[ stage  ->  A  ->  B ], 这段在事件流当中我们定义为  捕获阶段(是否记得addEventListener的第三个参数?);

我们触发事件的对象 [ D ] 也给它定义一个阶段,命名为:目标阶段;

最后 [ B  ->  A  -> stage ] 这阶段定义为 冒泡阶段。

PS:小建议,如果觉得搞不清为什么事件为什么会从stage跑到目标再回到stage这样的问题的话,还是别去管它了。只要记住不管这个事件在哪里发生, 总是会从stage 出发,然后找到触发事件的对象,再回到stage。

这样,一个完整的事件流由 捕获, 目标和冒泡 这三个阶段构成。

更多事件流的信息请访问黑羽博客:http://www.kingda.org/archives/kingda/2006/07/as305.html

扯了这么远,回到开始的话题。

当我们设置对象的 mouseEnabled 值的时候,它只影响对象本身不会触发事件,但这并不影响对象在事件件中的地位。也就是说当对象的子对象触发鼠标事件的时候,自身也会伴随发送事件。想想整个事件流,也就不难理解为什么我把父剪辑的 mouseEnabled 设置为 false 但父剪辑还是可以侦听到 鼠标事件。

所以,要禁止一个对象的触发交互事件,完整的做法是 mouseEnabled=false; mosueChildren=false; 同时设置这两个值。

好了,说了一堆全是文字。动手试一下:

  1. 在场景里画一个圆,选个红色或是什么的,保存为影片剪辑;
  2. 继续在场景里画一个方框,颜色和前面的圆区分开就行,位置最好重叠;
  3. 同时选中的圆(影片剪辑)和刚画好的方框,保存影片剪辑;
  4. 再在主时间轴上添加代码:getChildAt(0).addEventListener(MouseEevnt.MOUSE_OVER, function (e){trace(“overed”);});
  5. Ctrl+ENTER 运行测试,看看运行效果。
  6. 再添加一行代码:getChildAt(0).mouseEnabled = false;
  7. 再测试运行。是不是注意到区别了呢?

文件制作简单,就不附了。enjoy!