- + P A

- Flash7神奇现象-琢磨不透的setInterval

      Flash进修 2008-1-19 1:37

#include "Engine1.0.as"
var e = new Engine();
e.start();
//
btn.enabled = false;
for (var i = 0; i<10; i++) {
 mc = this["mc"+i];
 mc.xspeed = Math.random()*3+1;
 mc.move = function() {
  var x = this._x+this.xspeed;
  if (x<100 || x>450) {
   this.xspeed *= -1;
  } else {
   this._x = x;
  }
 };
 e.addMission(mc, mc.move);
}


场景中有一些小球MC(mc1,mc2......mc9),另外还有一个大的方形按钮(btn)
我利用setInterval(Engine内)使这些MC不停地左右来回运动
(帧频为12fps,interval为10ms,未使用updateAfterEvent进行刷新)
奇怪的是,当我让光标在隐形按钮区域内不停移动时,MC的速度明显加快了,移动也变得平滑了
而当
光标停止移动或是在按钮区域外移动时,MC的速度又恢复常态,移动又变得闪烁
神奇吧!

标签集:TAGS:ActionScript
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- 动力源Engine1.0.as

      Flash进修 2008-1-19 0:30

//集中管理需要重复执行的函数
/*/////////////////////  用例  /////////////////////////////////////
#include "Engine1.0.as"
var n1 = 0;
var n2 = 0;
function f1() {
 trace(">"+n1++);
}
function f2() {
 trace(n2%4+"   "+n2++);
}
var e = new Engine();
//添加负载,每隔2000ms执行一次f1,总共执行5次
e.addMission(this, this.f1, 2000, 5);
e.addMission(this, this.f2, 500, 60);
//开始运转
e.start();
//停止运转
//e.stop();
//减去指定负载
//e.subMission(this,this.f1);
//清除所有负载
//e.ridMission();
//设置引擎的间隔时间
//e.setInterval(1);
*///////////////////////////////////////////////////////////////////

标签集:TAGS:class ActionScript
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- Timer类as1.0版本

      Flash进修 2007-10-29 23:26

/*
//timer类as1.0版本

//----用例----
#include "Timer1.0.as"
T = new Timer(0.25*60*1000);
T.addViewer(TF1,"MSEL");//TF1显示毫秒数
T.addViewer(TF2,"SECOND");//TF2显示秒数
T.addViewer(TF3,"MM:SS");//TF3显示“分:秒”
T.addViewer(MC1);//MC1随时间正常播放
T.addViewer(MC2,-1);//MC2随时间倒序播
T.addViewer(MC3);//MC1随时间正常播放
T.onTimeOver = function() {
 //时间结束
 trace("time up")
 this.reset();
};
T.onTimeRun = function() {
 //计时中...
};
//开始
T.start();
//----------------
*/
function Timer(time) {
 this.totalTime = time;

标签集:TAGS:class timer
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- CustomCursor as1.0版本

      Flash进修 2007-10-23 23:52

工作就是工作,没法赶时髦,虽然AS3.0都出来很久了,但我们的一些东西还得用AS1.0来做
AS1.0也是可以写Class的,只是有点怪怪的

类文件 CustomCursor1.0.as  内容如下:

/*用例
#include "CustomCursor1.0.as"
myCursor=new CustomCursor()
myCursor.setCursor("myCursor",[mc1,mc2],{left:0,top:0,right:300,bottom:50})
*/

//构造函数
function CustomCursor() {
 this.eventMC = _root.createEmptyMovieClip("myCursor_eventMC", 7085);
 this.cursorMC = null;
 this.areaObj = null;
 this.targetArr = nu

标签集:TAGS:flash
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- 加载swf出现的问题

      Flash进修 2007-9-14 12:31

公司的一个项目,涉及N多课件(flash5~flash7版本),为统一界面和控制播放,用一个swf当做统一的shell去load这N多的课件,于是遇上了很多问题,记录一下:

1.很多课件中用到_root,有时这是无法避免的,所以加载後设置_lockroot=true;

2.有些课件中用到声音对象并链接库中的声音,这里如果用 new Sound() 建立声音对象(不指定目标),链接将会失败,可使用new Sound(this);

3.有的课件用到事件侦听,比如Key.addListener(obj),如果shell重复n次加载这个课件,侦听器也会累积到n个,这时按一下键盘就等于按了n下. 解决的办法就是在这个课件中加上代码:onUnload=function(){Key.removeListener(obj);}

4.有的课件用到 setIntervall ,如果shell重复多次加载这个课件就可能出现问题,办法和上面类似,在onUnload事件的回调函数中使用 clearInterval 清除;

5.有的课件用到 hitTest(x,y) 或是 hitTest(x,y,true) ,这时应该用 localToGlobal 事先将(x,y)转换为全局坐标,再使用hitTest,否则就会出问题

标签集:TAGS:flash
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- 任意Object使用onEnterFrame

      Flash进修 2007-9-4 17:9
//一直不知道这个方法,所以写Class时里面一直没用过onEnterFrame
import mx.transitions.OnEnterFrameBeacon;
OnEnterFrameBeacon.init();
obj = {};
obj.onEnterFrame = function() {
 trace("obj");
};
arr = [];
arr.onEnterFrame = function() {
 trace("arr");
};
MovieClip.addListener(obj);
MovieClip.addListener(arr);
标签集:TAGS:flash
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- 动态文本alpha变化

      Flash进修 2007-9-1 20:27

在闪吧看到的
给动态文本加个滤镜,alpha就可以变了,呵呵。试了下_rotation,不行

import flash.filters.BlurFilter;
var txt_blur:BlurFilter = new BlurFilter(0, 0, 0);
var speed:Number = 10
this.createTextField("my_txt", 1, 100, 100, 300, 100);
my_txt.text = "闪吧!!动态文本alpha变化!";
my_txt.filters = [txt_blur];
onEnterFrame = function () {
        my_txt._alpha -= speed;
        my_txt._alpha<=0 || my_txt._alpha>=100 ? speed=-speed : 终极讨厌;
};

标签集:TAGS:flash
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- FlashMX2004_bug

      Flash进修 2007-5-14 16:39

----------------------------查找替换----------------------------------
在Flash里按Ctr+F可弹出"查找和替换"对话框,可以查找的东西很多,声音,字体,元件,字符串,程序代码,标签,图层标签,等等.

但是我发现,如果用替换功能查找替换程序代码,修改後的结果不会保存到文件,你下次打开文件就会发现,程序代码还是和原来一样. 解决的办法就是在每一处发生替换的地方,手动打上个回车或是空格,这样就能保存了,很麻烦,不过也没别的招了.

以后替换代码的时候要记得,flash可能不会保存,你必须手动改一下代码,比如打个空格

------------------------------形变补间动画---------------------------

标签集:TAGS:
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- DoubleClick_改写双击类

      Flash进修 2007-4-29 10:50

flash中的按钮要响应双击事件,我们得自己写代码,之前有很多人都有这方面的研究
曾经在网上搜到过一个DoubleClick类,但是使用不太方便,于是改写了一下,现在就方便多了;
使用方法:定义好mc(或是btn)的onDoubleClick onSingleClick,注意单击响应都要写在
onSingleClick里面,不能使用原来的onRelease,然后用DoubleClick.init(mc

标签集:TAGS:flash class ActionScript
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- JSFL——很方便的批量发布工具(07-04-25改进版)

      Flash进修 2007-4-23 18:50

/**
功能:查找并发布指定目录及子目录下所有*.fla文件;
注意:Flash8.0以上版本可用;
警告:请勿尝试太大的目录(例如整个D盘),否则可能导致程序无法响应

*/
function getPath(){
        var folderPath = prompt("需要发布的文件夹:","");
 folderPath=folderPath.split("\\");
 folderPath = "file:///"+folderPath.join("/");
        if(folderPath.substr(folderPath.length-1,1)!="/"){
  folderPath=folderPath+"/";
 }
 return folderPath;
}
function getFiles(folderPath){

标签集:TAGS:flash扩展 jsfl 批量发布
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- 关于代码创建MovieClip

      Flash进修 2007-4-18 12:37

在as1.0,2.0中,我们可以用createEmptyMovieClip(),duplicateMovieClip(),attachMovie(),三种方法来动态创建MC,创建时都需要提供一个实例名称,但实际上很多时候我都不想提供这个实例名称,因为我不需要通过这个名称来访问MC.
例如下面的代码:
mcArr=[]
for(var i=0;i<10;i++){
 mcArr.push(_root.createEmptyMovieClip("mc_"+i,i))
}
//只需要通过数组元素就可以访问mc了,至于mc的名称完全不用管

//-

标签集:TAGS:flash
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- XHTML代码规范

      Flash进修 2007-4-12 17:35

虽然简单,但是蛮重要的,做个笔记

XHTML代码规范

     在开始正式内容制作之前,我们必须先了解一下web标准有关代码的规范。了解这些规范可 以帮助你少走弯路,尽快通过代码校验。

1、所有的标记都必须要有一个相应的结束标记
以前在HTML中,你可以打开许多标签,例如<p>和<li>而不一定写对应的</p>和</li>来 关闭它们。但在XHTML中这是不合法的。XHTML要求有严谨的结构,所有标签必须关闭。如果是单 独不成对的标签,在标签最后加一个“/”来关闭它。例如:
标签集:TAGS:
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- flash,晕了晕了[2]

      Flash进修 2007-3-26 13:14

//写法1
class BtnNode {
 private var child:Array;
 function BtnNode() {
  this.child=new Array();
  init();
 }
.............
}

//写法2
class BtnNode {
 private var child:Array=new Array();
 function BtnNode() {
  init();
 }
.............
}

----------------问题----------------
写法1,和写法2有什么不同吗?
产生的效果一样吗?

----------------发现----------------
如果使用写法2,结果是:BtnNode类的所有实例的child都指向同一个Array实例
只有使用写法1,才能为每个BtnNode的实例分配一个Array实例

如果不知道这个问题,或者没有注意这个问题,后果不堪设想
据说这是flash编译器的bug来的,不知道在java里面的话有没有这样的事
不过,不管怎么样,写法1才是比较规范的写法,以后不再偷懒了

标签集:TAGS:flash
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- 晕了晕了

      Flash进修 2007-3-23 16:48

class Data {
 private var $ op:String;
 private var $ data:Object;
 function Data() {
  $ op = "x,y,z,a,b,c";
  $ data = new Object();
 }
 function clone() {
  var copy:Data = new Data();
  for (var i in this.$ data) {
   copy.$ data[i] = this.$ data[i];
  }
  return copy; 
 }
}
-----------------------------------发现--------------------------------------------------------------------------
var d:Data = new Data();
trace(d.$ op)   //报错:该成员为私有成员,无法访问

var d = new Data();

标签集:TAGS:flash
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()

- 设计模式--与篮球共舞[转]

      Flash进修 2007-2-28 18:0
与篮球共舞,尽显模式本色

— 仅以此献给华中科技大学物理系01级2班篮球队

==创建型模式==

1、 =SIMPLE FACTORY=
打完篮球真累,正好边上有个小摊。
“来杯可乐。”
“我要芬达。”
“一瓶矿泉水。”

工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。有了小摊这个工厂,我们口渴的问题就很easy的解决了。

2、 =FACTORY METHOD=
以前每次下午打完篮球后一般很晚,回来再洗个澡,食堂就关门了。我们就集体跑过西三门外吃牛肉面(呵呵,人生之一大爽事啊),每个餐厅的风味还不一样,这无所谓啦,我们只要说一句“来碗牛肉面“就行了。

工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。每一个餐厅就是一个具体的工厂,可惜现在西三门已经关掉了,郁闷ing!

3、 =SINGLETON=
Kobe就是Kobe,不管你是从电视上看到,还是从报纸上看到,其实就是他一个人

单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。组织后卫可以有几个,但Kobe只能有一个,废话!

4、 =BUILDER=
NBA中强队颇多,且各有自己的特点,因此对付不同的队有不同的打法,但你只要说
标签集:TAGS:
我要留言To Comment 阅读全文Read All | 回复Comments() 点击Count()