Tag Archives: flash

flash cs4 开发 flex 组件

1、什么是Flash组件:
组件是flash里封装好的功能模块,由于采用类似暗箱的机制,使用起来更方便,更利于分享和复用。

2、flash cs4组件开发
flash cs4 中的组件开发变得更方便了。
实际开发中可能要注意一下问题:类绑定问题,命名空间问题,内部引用图形元素重声明,参数绑定,图标,
component 定义,swc输出 mxi文件配置 打包mxp,网上可以搜索到相应的教程。

3、flash cs4 开发 flex 组件

对于flash cs4 及 flash builder4来说,功能上的互相支援补充变得更容易了,通过Flash cs4开发flex组件变得异常容易,试想下把flash cs4的强大图形动画能力和flex的集成开放能力相结合是多么让人激动的事情阿,可以极大的增强flex UI 的表现里,并大大提高开放效率。

涉及到的相关问题:

1、flex component tool kits for flash cs4 下载及安装问题

2、mx.flash.UIMovieClip 类的功能实现 继承MovieClip类 实现UIComponent类接口。

3、另一种直接利用flash cs4 组件在flex中使用的方法,组件继承自MovieClip,在flex中addChild 到组件容器中。

下面是一个进度条 组件的例子:

下载: code.as
package wonder.loader{
 
//安装flex component tool kits for flash cs4后,导入UIMovieClip
import mx.flash.UIMovieClip;
import flash.display.*;
import flash.text.TextField;
import flash.events.Event;
//import flash.events.TextEvent;
 
public class wloader extends UIMovieClip {
private var _progNumber:int;
public function wloader():void {
super();
progLight.stop();
_progNumber=0;
playProg();
}
 
//setter,getter 进行属性设置,导入到flex builder后,使用wloader标记时,会自动添加 progNumber 属性
 
public function set progNumber(v:int):void {
_progNumber=v;
playProg();
 
}
public function get progNumber():int {
 
return _progNumber;
 
}
 
//进度文本显示及进度条动画控制
private function playProg():void{
numBox.text=_progNumber.toString();
progLight.gotoAndStop(_progNumber);
}
 
}
}

swc下载

FlashCS4新功能介绍

flash cs4出来有一段时间了,最近才有机会安装并使用,界面和功能上的变化还是挺多的,不过看过相关的文档和资料后感觉上手还是挺容易的.

下面就出现的一些新功能做下介绍:

1、基于物体(符号)的动画,cs4中的位移动画被改造成了和原先在director中制作动画一样的模式,在物体基础上添加motion tween,整个位移动画的路径也变成可视的了,调节起来也相当方便。甚至可以缩放整个路径来调整动画。原来的设定方式依然保留,叫做classic tween。

2、Motion Editor 面板,新增的Motion Editor面板简直就是从After Effect 中借鉴的功能,就连关键帧的添加界面都是一样的。所有的可动画属性在这里都可以进行详细的曲线调整,这样动画的控制终于上升到曲线的层面了,很多专业的Motion Designer 应该是很高兴的~除了自己来调节曲线的变化,面板的最下面更是预设了常见的弹性控制曲线。

3、Motion Tween 动画预设,这个面板提供了制作好的Motion Tween动画,点击Apply 就可以应用到选择的物体上面,同时自己也是可以把做好的动画保存在预设中。

4、IK系统的加入,CS4中的反向动力学系统的加入应该是这次更新的一个亮点,IK系统在3D动画软件包中是制作角色动画必不可缺的功能,近年来在部分2D动画软件中也引入了这样的功能,Flash当然也是不落人后的。通过构建角色的骨架,并绑定到相应的元素上面来实现通过骨骼来控制动作,所谓IK是对应于FK(正向动力学系统)的,IK系统的特征是通过关节末端来传递运动,层层向上带动父级关节运动。cs4提供了简单的Ik解算系统,对每个关节的绑定到图形表面的节点可进行方便的控制(使用绑定工具并选择关节后,当前关节作用的图形节点就以黄色的三角形和正方形的节点来表示,方形的节点表示当前关节完全控制的节点,三角形的节点表示和临近关节共享的控制点),通过ALT和Shift键配合进行删减。

5、3D变换,呵呵,Flash的创作空间终于延伸到Z轴了。通过提供的3D变换工具可以在3个维度上对物体的位移和旋转进行控制。在旋转控制中可以对物体应用局部坐标系统或全局坐标系统。
6、
未完待续…

婚庆公司flash网站

01

全Flash web制作涉及到的一些相关技术

全Flash web制作涉及到的一些相关技术:

1、页面加载技术,目前可以使用传统的loadMovie函数,movieClipLoader类来解决,或者使用网上可以找到的相关类库作为解决方案。

下载: code.as
import mx.transitions.Tween;
 
import mx.transitions.easing.*;
 
var loadingTw:Tween;
 
stop();
 
//----------------------EXTERNAL SWF LOADER
 
loadingTextBox._alpha = 0;
 
var mcLoader:MovieClipLoader = new MovieClipLoader();
 
var mcLoaderListener:Object = new Object();
 
//add a listener for the loader
 
mcLoader.addListener(mcLoaderListener);
 
//while the external swf file is loading
 
mcLoaderListener.onLoadProgress = function(target_mc, bytesLoaded, bytesTotal) {
 
//show preloader
 
loadingTextBox._alpha = 100;
 
//update preloader
 
var pctLoaded = Math.round(bytesLoaded/bytesTotal*100);
 
//page_mc.preloader_mc._xscale = pctLoaded;
 
trace(pctLoaded+" loaded!");
 
loadingTextBox.loadingShow.text = "loading: "+pctLoaded+"%";
 
//if loaded, fade in loaded content
 
if (bytesLoaded>=bytesTotal) {
 
loadingTextBox._alpha = 0;
 
loadingTw = new Tween(loadingTextBox, "_alpha", Regular.easeOut, 100, 0, 12, false);
 
trace("load done!");
 
}
 
};
 
mcLoaderListener.onLoadInit = function() {
 
loader_mc.play();
 
};
 
mcLoader.loadClip("part"+_root.link+".swf",loader_mc);

2、数据加载技术,一般使用XML结构的数据,封装数据的xml文件可以手动修改,也可以制作Php等后台动态更新数据,如果采用php可以把数据存储在mysql数据库,网站页面请求数据时,用php动态输出XML格式数据。目前打算尝试使用Wordpress系统作为flash展示型网站的管理后台,初步了解应该是可行的解决方案!

3、全屏幕控制

下载: code.as
//舞台的缩放及对齐控制
 
Stage.scaleMode = "noScale";
 
Stage.align = "TL";
 
//页面元素的初始设置!
 
loaderbox._x =(Stage.width-358)/2;
 
loaderbox._y =(Stage.height-50)
/2;
 
logo._x =(Stage.width-288)/2;
 
logo._y =(Stage.height-118)
/2-30;
 
BgLight._x = 0;
 
BgLight._y = 0;
 
BgLight._width = Stage.width;
 
BgLight._height= Stage.height;
 
///////////////////////////
 
//监听舞台resize变化
 
fullscreen = new Object();
 
fullscreen.onResize = function() {
 
//swf大小改变时触发根据Stage.width和Stage.height获得的舞台的宽和高来调整各元素显示
 
loaderbox._x =(Stage.width-358)/2;
 
loaderbox._y =(Stage.height-50)
/2;
 
logo._x =(Stage.width-288)/2;
 
logo._y =(Stage.height-118)
/2-30;
 
BgLight._width = Stage.width;
 
BgLight._height= Stage.height;
 
slideShow._x =(Stage.width-744)/2;
 
slideShow._y =(Stage.height-492)
/2;
 
bottomBar._x = 0;
 
bottomBar._y = Stage.height-83;
 
bottomBar._width = Stage.width;
 
topBar._x = 0;
 
topBar._y = 0;
 
topBar._width = Stage.width;
 
logoBottom._x = 15;
 
logoBottom._y = Stage.height-110;
 
logoTop._x =(Stage.width-440)/2;
 
logoTop._y =0;
 
musicCtr._x = Stage.width+80;
 
musicCtr._y = Stage.height-55;
 
menu._x = 420;
 
menu._y = Stage.height-80;
 
};
 
Stage.addListener(fullscreen);

关于 flash8 组件 export in first frame

flash 8 中使用loader 进行预加载制作,如果在文件中使用了2.0的组件内容,那么默认组件是 export in first frame 的,这样带来的问题是影片第一帧的数据量很大(由于包含了导出的组件数据,组件使用很多时更是明显),客观上造成加载进度条失效(往往从90%往上开始进度显示)。
解决方案:
1、所有使用组件在库里右键linkage,取消export in first frame;
2、在publish setting-actionscript setting 里设置 export frame for classes 的值为2;

这样问题解决,导出的组件数据已经放到第2帧了~

Flash tweening 类库介绍

常见的tweening类库:
1、Fuse Kit(http://www.mosessupposes.com/Fuse/)很强大的tweening类库,很多用户,目前没AS3.0版
2、Tweener (http://code.google.com/p/tweener/)有AS3.0版,简单易用
3、TweenLite(http://blog.greensock.com/tweenliteas3/)据说是最快的引擎
4、gTween(http://www.gskinner.com/libraries/gtween/)
5、kitchensynclib(http://code.google.com/p/kitchensynclib/)

第一个Air小程序

开发给公司的课件合成人员使用,主要功能是实现了对大量包含时间点的xml文件的分析处理,可以减少花在上面的重复劳动时间。
采用flash cs3开发,涉及文件的查找,读写,字符,xml的处理。

AIR NativeWindow 窗口控制

几个重点:
1、AIR默认会生成一个主窗口,可以用this.stage.nativeWindow获得对主窗口的引用;
2、AIR程序可生成多个窗口,并使用addChild向窗口添加内容;
3、窗口colse后就不能在重新打开了,只能从新构造窗口,或者使用visible方式是窗口暂时不显示;
4、主窗口的初始设置是在app.xml文件里完成的,新建窗口要使用NativeWindowInitOptions进行窗口初始化设置

代码如下:

下载: window.as
  1. package {
  2.  
  3. import flash.display.MovieClip;
  4.  
  5. import flash.display.NativeWindow;
  6.  
  7. import flash.display.NativeWindowInitOptions;
  8.  
  9. import flash.display.NativeWindowType;
  10.  
  11. import flash.events.MouseEvent;
  12.  
  13. public class testWindow extends MovieClip {
  14.  
  15. private var myBox1:MovieClip;
  16.  
  17. private var myBox2:MovieClip;
  18.  
  19. private var mainWin:NativeWindow;
  20.  
  21. private var window:NativeWindow;
  22.  
  23. public function testWindow() {
  24.  
  25.  
  26.  
  27. myBox1 = new box();
  28.  
  29. myBox2 = new box();
  30.  
  31. mainWin = stage.nativeWindow;
  32.  
  33. with (myBox1) {
  34.  
  35. x=100;
  36.  
  37. y=100;
  38.  
  39. alpha=.5;
  40.  
  41. }
  42.  
  43. with (myBox2) {
  44.  
  45. x=400;
  46.  
  47. y=100;
  48.  
  49. //alpha=.5;
  50.  
  51. }
  52.  
  53. mainWin.stage.addChild(myBox1);
  54.  
  55. mainWin.stage.addChild(myBox2);
  56.  
  57. myBox1.addEventListener(MouseEvent.CLICK,clickHandler1);
  58.  
  59. myBox2.addEventListener(MouseEvent.CLICK,clickHandler2);
  60.  
  61. }
  62.  
  63. private function clickHandler1(event:MouseEvent):void {
  64.  
  65. var options:NativeWindowInitOptions = new NativeWindowInitOptions();
  66.  
  67. options.type = NativeWindowType.UTILITY;
  68.  
  69. if (!window||window.closed) {
  70.  
  71. window = new NativeWindow(options);
  72.  
  73. window.width = 200;
  74.  
  75. window.height = 200;
  76.  
  77. window.activate();
  78.  
  79. }
  80.  
  81. }
  82.  
  83. private function clickHandler2(event:MouseEvent):void {
  84.  
  85. if (!window.closed) {
  86.  
  87. window.width += 100;
  88.  
  89. window.height += 100;
  90.  
  91. }
  92.  
  93. }
  94.  
  95. }
  96.  
  97. }

stage,rootMain,TimeLine 的相关问题

 在最近的工作中开始采用as3编码flash应用,最近遇到了下面的问题,解决后把相关的一些内容记录如下:
问题简单描述:
flash cs3 在主时间轴对影片进行播放控制,可以在帧上加代码this.gotoAndPlay();实现AS2中类似的功能,如果主场景中有一movieClip:box_mc;在box_mc中加代码控制主时间轴播放如何做呢?
this.parent.gotoAndPlay()?
这样会提示如下错误:
1061: Call to a possibly undefined method gotoAndPlay through a reference with static type flash.display:DisplayObjectContainer.
解决方式:
object(this.parent).gotoAndPlay();//需要进行类型转换
但是如果主场景中:

下载: code.php
trace("this:"+this);
//this:[object MainTimeline]
trace("this.parent:"+this.parent);
//this.parent:[object Stage]
box_mc中:
trace("this.parent:"+this.parent);
//this.parent:[object MainTimeline]

都指向相同的MainTimeline,为什么要转换类型呢?看了很多相关文字,感觉没有完全讲清楚。
有几个方面的内容还是比较重要的:
1、stage、root 是所有显示对象都有的属性。stage属性指向显示层级的第一级也就是可以理解为flash播放器舞台,root属性指向显示层级的第二级也就是文档类实例,如果没有声明文档类,应该指向flash IDE自动建立的MainTimeline 主时间轴;MainTimeline是FLA文档生成的SWF必然具备的舞台对象,他的parent是stage,其他所有显示对象都是他的子孙,这些子孙的root属性都指向它。(除非是你自己写代码给stage添加的child,他们的root就不是MainTimeline 而是文档类实例)
值得强调的一点是,MainTimeLine这个类是非公开的,ADOBE没有在手册里列出,大家平时把它当作MovieClip来对待就可以了。
stage类的继承关系:
Stage-DisplayObjectContainer-InteractiveObject-DisplayObject-EventDispatcher-Object
2、AS3中获取显示对象引用可以使用getChildAt(index:int):DisplayObject 和getChildByName(name:String):DisplayObject这两个方法,它们是在DisplayObjectContainer这一级定义的方法。

大连边防检查站电子辖区图项目

这个项目断断续续有2个月时间,整个网站采用as 2.0 编程,数据采用XML的形式进行管理,通过点击相应的码头泊位名称,动态的调用显示相应的说明信息及图片,视频演示。通过这个项目也加强了flash AS编程的学习。flashCS3中的AS3.0程序引擎将更加强大,编程习惯和方式也改变相当大,呵呵,有要啃一段时间咯!