静态博客入口:http://blog.5d.cn/vip/jh7086/
2008/06/25 | EAN-13标准条码生成器flash版
类别(Flash习作) | 评论(3) | 阅读(1011) | 发表于 14:40
2008/05/11 | 扩展Array类
类别(Flash习作) | 评论(0) | 阅读(102) | 发表于 03:02

模仿as3的Array,扩展as1,as2中Array类的功能
"extendArray.as"

Array.prototype.indexOf = function(value, num) {
 num = isNaN(num) ? 0 : num;
 for (var i = num; i<this.length; i++) {
  if (this[i] === value) {
   return i;
  }
 }
 return -1;
};
Array.prototype.lastIndexOf = function(value, num) {
 num = isNaN(num) ? 0 : num;
 for (var i = this.length-1; i>=num; i--) {
  if (this[i] === value) {
   return i;
  }
 }
 return -1;
};
//生成一个乱序的新数组

2008/01/19 | Flash7神奇现象-琢磨不透的setInterval
类别(Flash进修) | 评论(0) | 阅读(92) | 发表于 01: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的速度又恢复常态,移动又变得闪烁
神奇吧!

2008/01/19 | 动力源Engine1.0.as
类别(Flash进修) | 评论(0) | 阅读(37) | 发表于 00: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);
*///////////////////////////////////////////////////////////////////

2007/12/13 | Expression数学表达式求值AS2.0版本
类别(Flash习作) | 评论(0) | 阅读(311) | 发表于 17:02

//用例:
//estr="sum(1,2,3,sin((4+5)*10),acos(cos(70)),avg(1,2,3,4,5,6,7,8,9))+2e+4";

//Expression.evaluate(estr);

/**
 * @author jh7086
 */
class Expression {
 //为方便检测"+ -"是否为正负号,限用单个字符的运算符
 private static var ostr : String = "+,-,*,/,%,^,e";
 private static var oarr : Array = ostr.split(",");
 private static var fstr : String = "abs,round,sqrt,sin,cos,tan,acos,asin,atan,log,exp,sum,avg,count,max,min";
 private static var farr : Array = fstr.split(",

2007/11/22 | Tween1.0.as 简陋的缓动类AS1.0版本
类别(Flash习作) | 评论(1) | 阅读(113) | 发表于 23:29
//Tween类AS1.0版本
/*用例:
#include "Tween1.0.as"
var myTween=new Tween();
myTween.addTween(MC1,"_x",func1,0,200);
function func1(obj){
 obj._x+=5;
}
myTween.addTween(MC2,"_alpha",func2,100,0);
function func2(obj){
 obj._alpha-=5;
}
*/
function Tween() {
 _global.Tween_intervalID1 = null;
 _global.Tween_instance=this;
 this.running = false;
 this.list = new Array();
}
Tween.prototype.addTween = function(obj, prop, func, begin, finish) {
 obj[prop] = begin;
 this.list.push({obj:obj, prop:prop, func:func, begin:begin, finish:finish});
 if (!this.running) {
  this.start();
2007/11/16 | Model-View-Controller Song 歌唱MVC模式
类别(Flash习作) | 评论(0) | 阅读(39) | 发表于 16:10
http://csl.ensm-douai.fr/noury/20
呵呵,一首特别的歌
2007/11/13 | DoubleClick1.0.as 双击类AS1.0版本
类别(Flash习作) | 评论(0) | 阅读(108) | 发表于 10:51
/*
使用方法:定义好mc(或是btn)的onDoubleClick 和onSingleClick,注意单击响应都要写在
onSingleClick里面,不能再使用原来的onRelease,然后用DoubleClick.init(mc)处理一下mc就可以了
//-----用例-----
#include "DoubleClick1.0.as"
DK=new DoubleClick()
mc1.onDoubleClick = function() {
 trace("双击 [ "+this._name+" ]");
};
mc1.onSingleClick = function() {
 trace("单击 [ "+this._name+" ]");
};
mc2.onDoubleClick = function() {
 trace("双击 [ "+this._name+" ]");
};
mc2.onSingleClick = function() {
 trace("单击 [ "+this._name+" ]");
};
mc3.onDoubleClick = function() {
 trace("双击 [ "+this._name+" ]");
};
mc
2007/10/31 | EventListener AS1.0版本
类别(Flash习作) | 评论(0) | 阅读(83) | 发表于 23:43

//试验
#include "Test1.0.as"
function f1() {
 trace("call f1");
}
function f2() {
 trace("call f2");
}
function f3() {
 trace("call f3");
}
function f4() {
 trace("call f4");
}
obj = new Test();
obj.addListener("PRESS", f1);
obj.addListener("PRESS", f2);
obj.addListener("PRESS", f1);
obj.addListener("RELEASE", f3);
obj.addListener("RELEASE", f4);
//obj.removeListener("PRESS",f1)
obj.onPress();
obj.onRelease();
//---------------------------------------------------

2007/10/29 | Timer类as1.0版本
类别(Flash进修) | 评论(1) | 阅读(123) | 发表于 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;

2007/10/23 | CustomCursor as1.0版本
类别(Flash进修) | 评论(0) | 阅读(81) | 发表于 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

2007/09/14 | 加载swf出现的问题
类别(Flash进修) | 评论(1) | 阅读(106) | 发表于 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,否则就会出问题

2007/09/04 | 任意Object使用onEnterFrame
类别(Flash进修) | 评论(0) | 阅读(204) | 发表于 17:09
//一直不知道这个方法,所以写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);
2007/09/02 | 自定义光标类——CustomCursor
类别(Flash习作) | 评论(1) | 阅读(691) | 发表于 20:20

//功能:设置自定义的光标并在指定的区域或MC上显示
//AS2.0编写

//该类使用单列模式,且只public一个静态方法:setCursor(style:String, targetArr:Array, area)
//用例1:CustomCursor.setCursor("linkname",[mc1,mc2,mc3],{left:0,right:400,top:0,bottom:100}) 将库中链接名为“linkname”的MC作为自定义光标,并作用在mc1,mc2,mc3以及矩形区域(0,0)~(400,100)上
//用例2:CustomCursor.setCursor() 恢复使用默认光标
 压缩包下载

class CustomCursor {
 private var eventMC:MovieClip;
 private var cursorMC:MovieClip;
 private var areaObj;

2007/09/01 | 动态文本alpha变化
类别(Flash进修) | 评论(0) | 阅读(97) | 发表于 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 : 终极讨厌;
};