背叛时间轴·突破IDE

首先我想要申明,这个标题确实夸张了。只是希望通过这种夸张能引起各位不愿意重视ActionScript的Flashers的注意。

其实每一个Flasher,特别是经历过Flash4、Flash5的这一批人,都是常年通过实践周来部署作品界面的。包括我自己,对时间轴的熟悉也经历了一个比较长的过程。这个过程中,我也距离Flash的思想越来越近。

先说说IDE的概念吧,相信对于一个界面或者动画设计师来说,IDE绝对是一个足够陌生的名词。其实,我们每天用到的Flash就是一个IDE环境。我在这里更准确地引用如下概念,相信看完后IDE这个词将不再陌生:

引用 wikilib.com
集成开发环境(Integrated Development Environment,简称IDE),又名集成编程环境或可视化开发环境,是为方便软件开发人员进行开发而设计的软件,一般针对某一编程语言开发,大多数为界面友好的可视化环境,一般整合源代码编辑器、调试器、编译器和资源编辑器。
显然,时间轴是IDE的一部分,但我更愿意把时间轴分离出来强调,甚至适度夸张地批判。因为有时候时间轴确实笨重的。如果您不是一个逐帧动画高手,而是一个以开发Flash应用程序(尤其是游戏)的设计师,我想时间轴许多情况下所表现的特性显得十分尴尬。比如MotionTween看起来只有两个关键帧,其实之间的渐变帧都是要耗占文件体积的。

此外,有很多情况下,我们需要动态的管理一些场景上的元素。如果用时间轴,我想恐怕只能用最土的gotoAndPlay、gotoAndStop配合使用了。当然,在Flash4、Flash5时代,确实造就了一批顶级高手,他们仅用gotoAndPlay来完成任务,这些人有着严谨的逻辑思维能力和极好的心态。然而到了MX时代,尤其是MX2k4时代,AS的飞跃发展,导致之前的这种天才设计模式沦为一介莽夫之举!

Flash5中attachMovie的出现,无疑是一场革命性的发展。可惜那个时候用attachMovie的人并不多,因为相比时间轴,它确实挺麻烦的。由于项目需求在那个时候与现在不同,时间轴效果仍然是主流的开发手段。

MX 时代最大的革命我印象最深刻的其实是IDE。Flash5中愚昧的面板到了MX变得那么乖巧听话。MX时代的到来引发了一场Flash制作风暴,越来越多的人(主要是动画制作为主)加入到Flasher这个队伍中来。可惜后来MX2k4和8改变了界面,其实我个人挺喜欢MX的IDE界面设计的!(不知道以后会不会推出一个可制定IDEskin的怀旧版)

MX和MX2k4的推出,使得AS更加规范,项目需求的改变,导致时间轴的效果越来越显得捉襟见肘了。更多的人开始投入动态部署场景的行列,然而值得一提的是,有一些老一辈Flash设计大师似乎仍然不为之所动,MM推出的时间轴特效更是 MX2k4的一大败笔。当然瑕不掩瑜,AS2.0给MX2k4予以无限光芒,这段时间涌现了大量的AS-coder,水平参差不齐,不论如何,这是另一场革命!

这个时代中,项目需求又有所变化,越来越多的复杂的应用程序要通过Flash来完成,要不是半路杀出一个AJAX,我怀疑Javascript真的要被Actionscript盖住光芒了。我自己独立完成的56涂鸦也是使用的MX2k4完成的。

现在到了8,虽然AS没有实质上变革,但项目需求又一次提高,时间轴完全不能独立部署一个优秀的应用程序了。更多的人开始关注Actionscript,开始关注attachMovie这样一个曾经被我们因“麻烦”而嫌弃的语句。

不想太纯粹的讨论技术,于是发了以上一些胡言乱语,现在还是简单介绍一些attachMovie吧。

首先,要明白Flash的基本编译原理。SWF文件中的内容无疑主要来自于库,这个概念相对大家都不会陌生(就是Library)。库中包含了所有的时间轴引用的元件,当然_root也是一个MC元件,它也包括所有的在IDE中的零散图形。剩下的内容就是库中含有linkage ID的元件了。这些元件就是attachMovie的最重要的操作对象!

不想强调太多的理论知识,因为这些内容都可以在帮助文档中找到。我想结合自己的开发经验谈一谈:

首先,attach的内容,尽量不要attach到_root下。因为本来就是要动态的管理MC,如果清一色放到_root下,会导致分类不明确,很难高效率调度、管理MC。我建议在_root下动态建立一个MC。比如,你有一个游戏中,要防止对手和友军,那不妨就建立两个MC容器“NPC_mc” “Enemy_mc”,然后再对这两个mc进行attache:

var NPC:MovieClip = _root.createEmptyMovieClip("NPC_mc",1);
var EMY:MovieClip = _root.createEmptyMovieClip("Enemy_mc",2);
for (var i=0;i<iMax;i++)
NPC.attachMovie(....);
for (var j=0;j<jMax;j++)
EMY.attachMovie(....);

其次,由于是动态建立MC,很多时候我们无暇管理深度,Macromedia Flash 2k4以来,提供了一个非常重要的方法:getNextHightestDepth(),这个方法可以找到当前MC中最深的一个深度,然后以Number型返回。

这样一来,我们经常会看到2k4版本后的一些“模版式”代码:

//某循环内
var d:Number = this.getNextHighestDepth();
this.attachMovie("someLibStr","myMC"+d,d);
//某循环内

显然,代码简单易懂,非常适合动态部署大量的MC(配合循环)

动态地删除则是removeMovieClip,这个语句非常简单,就不赘述了。

最后整理一些常见问题:

1、库中的连接名给错
2、自命名没有随层级变化而变化,强烈推荐用一个名词+深度来命名。
3、深度序号未定义,造成MC指向undefined
4、母MC未定义(这个容易在含有function的情况下出现)

所有这些问题通过trace绝对可以找到,大家多点耐心就行了。

最后祝大家顺利突破IDE、打破时间轴的限制!

时间: 2024-08-24 05:44:05

背叛时间轴·突破IDE的相关文章

谷歌文化研究所:一个集合的历史时间轴

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 谷歌被公认为是全球规模最大的搜索引擎,为大家提供了简单易用的免费服务.近日,谷歌与17个博物馆和文化基金会建立了一个在线文化研究所.在上面,谷歌用多媒体的形式展示了超过40个的在线历史展览.这个历史时间轴是根据一些存档的信件.手稿.第一手的视频推荐和其他的文档来整编的. 文化研究所对于课堂教学和历史爱好者来说,是一个强大的资料来源.用户可以通

图片-一个类似于时间轴的东西不知道叫什么,大家帮忙看看谢谢

问题描述 一个类似于时间轴的东西不知道叫什么,大家帮忙看看谢谢 问问大家,这个东西叫什么啊,比如说时间轴,但这个应该不是时间轴,那它叫什么,怎么实现的呢或者说一下叫什么吧,谢谢大家,这个每完成一步亮一步的东西 解决方案 这个应该叫进度条,英文叫PROGRESS 解决方案二: 这个应该叫进度条,是某些控件拼接起来的一种自定义控件,其实就是把对应的部分写上触发事件,改变颜色和text属性值 解决方案三: 进度条,可以自己设计的

timeline.js生成时间轴问题

问题描述 timeline.js生成时间轴问题 <!DOCTYPE html><html><head> <meta charset=""utf-8""/> <title>Timeline</title> <!-- The default timeline stylesheet --> <link rel=""stylesheet"" hr

网页效果-简单的时间轴实现

之前在网上看到,有很多人写的时间轴效果,于是自己也模仿着写了写. 以下贴出自己写的解决方法(横向轴与纵向轴). 简单的时间轴效果容易实现,但如果需要看起来有模有样,就需要对页面进行设计布置了. 1.利用Js加简单的界面布置,实现时间轴鼠标点击轮换图片效果(纵向). 实现思路:利用多个div加背景色做纵向时间轴的样式,用CSS进行定位布局(时间轴一般都相对于浏览器窗口位置进行定位,避免浮动),再加上相应的文字描述.(:after,:before等一样能实现其效果),最后在用Js添加一些简单的鼠标事

flash cs5基础教程-时间轴的认识

时间轴用于组织和控制文档内容在一定时间内播放的图层数和帧数.与胶片一样,Flash 文档也将时长分为帧.图层就像堆叠在一起的多张幻灯胶片一样,每个图层都包含一个显示在舞台中的不同图像.时间轴的主要组件是图层.帧和播放头. 文档中的图层列在时间轴左侧的列中.每个图层中包含的帧显示在该图层名右侧的一行中.时间轴顶部的时间轴标题指示帧编号.播放头指示当前在舞台中显示的帧.播放 Flash 文档时,播放头从左向右通过时间轴. 当时间轴状态显示在时间轴的底部,它指示所选的帧编号.当前帧频以及到当前帧为止的

PHP实现时间轴函数详解

本文将介绍如何实现基于时间轴的时间的转换. 首先我们要明白时间的几个函数: time():返回当前的 Unix 时间戳 date():格式化一个本地时间/日期. 应用举例: 格式化当前时间,输出:2010-10-11 05:27:35 strtotime():将任何英文文本的日期时间描述解析为 Unix 时间戳. 应用举例: 输出1天前的时间戳:1286861475 date_default_timezone_set():设定要用的默认时区. 一般我们设置北京时间:date_default_ti

php中时间轴开发,即显示为“刚刚”、“5分钟前”、“昨天10:23

  php中时间轴开发,即显示为"刚刚"."5分钟前"."昨天10:23"等 开发中还是蛮有用的,譬如论坛帖子,围脖等都有相关应用 //时间转换函数  function tranTime($time) {       $rtime = date("m-d H:i",$time);       $htime = date("H:i",$time);              $time = time() - 

Flash时间轴动作与脚本的执行先后顺序

脚本|执行 这条经验一直忘记发上来,相信许多Flasher对此都还不太了解,尤其是Flash Designer. Flash的脚本要先于时间轴的动作执行.举个例子,你可以新建一个文档,然后建两帧,第一帧随便放一个图形,第二帧为空关键帧,并在第二帧的时间轴上写gotoAndPlay(1); 运行影片将发现,第二帧的空关键帧并未执行到.而后你再将第二帧的gotoAndPlay(1);删除,运行影片将发现,此时画面在一闪一闪. 旋转图形是这一技巧的典型应用之一.如果你在补间上使用了旋转,将发现旋转到结

Flash 8.0打造流光型按钮-时间轴版

按钮 先来看看效果,应该还不错啦: 点击这里下载源文件 以前这样的效果要做的话,恐怕得开AE了,现在有了flash8,问题似乎简单了很多,因为只用到了一个滤镜,就是渐变斜角 下面教大家三步走完成这个效果,先用时间轴来作,as就不成问题啦 首先打开flash8,新建一个文档,场景大小自订,帧数自订,也别太低啦(我这里是18帧/秒) 1.绘制一个按钮图像mc,这里我画了一个flash8的图标,如图: 2.新建一个mc,把刚才的图标拖入新建mc的场景中,然后选中它,点击属性面板,选择滤镜,为它添加渐变