一个人在外面飘的感觉不错,可以每天吃快餐面和盒饭,在家也不错,可以每天洗热水澡
昨天晚上车上熬了一夜,坐了800多公里的车,回家奢侈几天也不错.公司还在装修,可能要到十号才可以上班,渐觉无聊,于是把flash8的帮助又看了一遍,感觉还不错哈,把一些自己的总结贴出来 以后备用
这里记录一个无敌得网站,弹了这么多年琴,玩了几年得flash觉得都白玩了 http://guitarshredshow.com/
xml得简单知识
—————————————————————————————————-
Xml的内容.
<data1 name="imagebear_one">
<data2 name="mariger_two" name_2="hantu">这里是第一个节点地内容</data2>
<data3 name="mariger_three" name_2="xiaoan">第二个节点地内容</data3>
</data1>
读取xml得基本语句
System.useCodepage = true;
var myXML = new XML();
//引用XML文件:
myXML.load("city_menu.xml");
//忽略空格:
myXML.ignoreWhite = true;
//默认的为false
//处理XML对象的函数:
myXML.onLoad = function(success) {
if (success) {
trace("读取成功");//注意!!,赋值的句子一定要写在这里
} else {
trace("读取失败");
}
};
分析xml的层级关系
myXML.firstChild //通常是整个xml数据都存贮在这里了
<data1 name="imagebear_one">
<data2 name="mariger_two" name_2="hantu">这里是第一个节点地内容</data2>
<data3 name="mariger_three" name_2="xiaoan">第二个节点地内容</data3>
</data1>
myXML.firstChild.firstChild //第一个节点下的第一个节点内容
<data2 name="mariger_two">这里是第一个节点地内容</data2>
myXML.firstChild.firstChild.nodeName //第一个节点下的第一个节点的节点头
data2
myXML.firstChild.firstChild.attributes.name //第一个节点下的第一个节点的属性为name的值
mariger_two
myXML.firstChild.firstChild.attributes.name_2 //第一个节点下的第一个节点的属性为name_2的值
韩启贤
myXML.childNodes[0].childNodes[1].nodeName //这里的0其实是代表一的.这里表示第一个节点下的第二个节点的节点头
data3
—————————-
循环读取包含中的内容的时候记得最后的.childNodes[0].nodeValue是不变得
myXML.childNodes[0].childNodes[0].childNodes[0].nodeValue //这里要注意其实childnodes[0]既有层的概念也有节点的概念
这里是第一个节点地内容
myXML.childNodes[0].childNodes[1].childNodes[0].nodeValue
第二个节点地内容
//输出节点长度
trace(myXML.childNodes[0].childNodes[0].childNodes.length);
—————————————————————————————————-
一个简单得类
调用类
import User;//要主意大小写
var user1:User = new User("un1", "pw1");
trace("Before:");
trace("\t username = " + user1.username); // un1
trace("\t password = " + user1.password); // pw1
user1.username = "1nu";
user1.password = "1wp";
trace("After:");
trace("\t username = " + user1.username); // 1nu
trace("\t password = " + user1.password); // 1wp
下面是类得定义
class User {
// 私有实例变量
private var __username:String;
private var __password:String;
// 构造函数语句
public function User(p_username:String, p_password:String) {
this.__username = p_username;
this.__password = p_password;
}
//使用getter和setter方法
public function get username():String {//getter方法可以返回值
return this.__username;
}
public function set username(value:String):Void {//setter方法可以设定值
this.__username = value;
}
public function get password():String {
return this.__password;
}
public function set password(value:String):Void {
this.__password = value;
}
}
/*
getter 和 setter 方法的语法如下所示:
getter 方法不能有任何参数,始终返回一个值。
setter 方法始终带一个参数,从不返回任何值。
类通常会定义 getter 方法和 setter 方法来分别提供对给定属性的读访问和写访问。
如果要使用更简明的语法,可以使用隐式 getter 和 setter 方法。
利用隐式 getter 和 setter 方法能够以直接访问的方式访问类属性,同时还可以保持良好的面向对象编程惯例。
若要定义这些方法,应使用 get 和 set 方法属性。
首先应创建用于获取或设置属性值的方法,然后在方法名前面加上 get 或 set 关键字,如上面所示。
*/
—————————————————————————-
初始化flash
Stage.showMenu = false;
//右键菜单不显示
System.useCodepage = true;
//这样从ASP读取的中文内容才能正常显示
Stage.scaleMode = "noScale";
//整个FLASH主体设定为不可缩放
Stage.align = "TL";
//内容设定为左上对齐
——————————————————————————
数组学习
//数组学习;
var myarr:Array = new Array();
var i:Number = 0;
var j:Number = 0;
for (i=0; i<10; i++) {
myarr[i] = i+5;
}
trace(myarr);
trace("sort 的方法会对数组进行字符表编码排列,对上面数组排列后的内容是 "+myarr.sort());
//.length 是获得数组得长度
trace("数组得长度是 "+myarr.length);
//删除数组元素
delete myarr[5];
trace("删除第五个元素后的数组是 "+myarr);
//建立字符串数组
var myArray:Array = ["one", "two", "three"];
trace("建立字符串数组 "+myArray);
//建立二维数组
var mainArr:Array = new Array();
for (i=0; i<3; i++) {
mainArr[i] = new Array();
//这句是很关键得,意思是在mainArr[i]上再创建一个数组
for (j=0; j<5; j++) {
mainA
rr[i][j] = "["+i+"]["+j+"]";
}
}
trace(mainArr);
//typeof显示变量得类型
trace("typeof返回myArray变量类型是 "+typeof (myArray));
//定义一个类吗???这里的id直接把mainarr的值赋给了id
var someUser:Object = {name:"Hal", id:mainArr};
trace("User's name is: " + someUser["name"]);
trace("User's id is: " + someUser["id"]);
———————————————————————————
load vars的交互
//=====================================================;
// Flash代码;
//=====================================================;
//定义LoadVars对象;
var data_lv = new LoadVars();
//提交的用户名变量和参数值;
data_lv.username = "kinglong";
//提交的密码变量和参数值;
data_lv.password = "king";
//提交后返回结果;
data_lv.onLoad = function(success){
//success,数据提交是否成功;
//这个只是表示数据传输是否成功,并不是用户验证的结果;
if(success){
trace("数据提交成功!");
//result也是用户验证返回的实际结果!
if(this.result=="true"){
trace("yes");
}else{
trace("no");
}
}else{
trace("数据提交失败!");
}
}
//数据提交方法调用;
//第一参数就是提交的页面地址;
//第二参数就是返回结果对象(只要是LoadVars对象就可以了);
//第三参数就是提交方式(这个和html中form表单类似,分为"post"和"get"两种方式)
data_lv.sendAndLoad("http://www.klstudio.com/save.asp",data_lv,"post");
//=====================================================;
//后台服务端页面处理及返回内容;
//=====================================================;
//接收flash提交过来的变量和接收一个页面提交过来的变量一致的;
Request("username") 就是flash端username变量传过来的值"kinglong";
Request("password") 就是flash端password变量传过来的值"kinglong";
….数据库验证…..
//如果用户验证通过
&result=true
//如果用户验证失败
&result=false
//整个页面返回内容就是上面那一行内容,&result对应用着flash端的result变量;
//如果是多个返回值的话,就是&result=xxx&result1=xxx这种形式就可以了;
=============================================
让flash在web中保持速度的代码
<param name="quality" value="high">
<param name="menu" value="false">
<param name="wmode" value="transparent">
<param name="wmode" value="opaque">
===========================
加载图片并且初始化,注意:loadclip必须flash八版本以上支持
var myloader:MovieClipLoader = new MovieClipLoader();
myloader.addListener(this);
myloader.loadClip("01.jpg",jpgloader);
function onLoadInit(mc:MovieClip) {
trace("onLoadInit: "+mc);
jpgloader._x = jpgloader._x-jpgloader._width/2;
jpgloader._y = jpgloader._y-jpgloader._height/2;
}
===========================
时间锁
_root.onLoad = function() {
now_date = new Date();
now_date.setFullYear(now_date.getFullYear());
now_date.setMonth(now_date.getMonth()+1);
now_date.setDate(now_date.getDate());
//trace(end_date.getMonth());
//trace(now_date.getMonth());
if (now_date.getMonth()>3) {
trace("三月份过了,无法使用");
}
};
建立一个不会延迟的鼠标
cursor_mc.onMouseMove = function() {
this._x = this._parent._xmouse;
this._y = this._parent._ymouse;
updateAfterEvent();
};
控制一条曲线,主要是curveTo的应用.
var inity = 200;
var controlX;
var controlY;
var anchorX = 50;
var anchorY = 50;
this.onMouseMove = function() {
this.createEmptyMovieClip("curve", 1);
with (curve) {
//with就是不用写开始的代码
lineStyle(1, 000000, 50);
moveTo(initX, inity);
ControlX = _xmouse;
ControlY = _ymouse;
lineTo(ControlX, ControlY);
lineTo(anchorX, anchorY);
moveTo(initX, inity);
curveTo(ControlX, ControlY, anchorX, anchorY);
}
updateAfterEvent(this.onMouseMove);
};
解决用createEmptyMovieClip语句建立出来的mc无法load(加载)外部文件的方法
imageMc = mainContainer.createEmptyMovieClip("imageMc", 1);
//imageMc.loadMovie("E:\\1.jpg"); //不能用这种方法====>下面是解决办法
//建立一个loader
var loader:MovieClipLoader = new MovieClipLoader();
//读取
loader.loadClip("c:\\1.jpg", imageMc);
//建立一个监听器
var mclListener:Object = new Object();
mclListener.onLoadInit = function(evt:MovieClip) {
evt.onPress = function() {
trace("bbb");
};
};
loader.addListener(mclListener);
每隔一段时间就执行一个函数的程序.好用哦.
var maxCount:Number = 10;
function executeCallback():Void {
trace("现在的秒数是 "+intervalId+" count: "+count);
if (count>=maxCount) {
clearInterval(intervalId);
}
count++;
}
intervalId = setInterval(this, "executeCallback", 1000);
遍历场景内所有的对象
trace(i+": "+_root[i]);
}
授权给指定的网站.这样那些网站就可以远程跨域调用这个flash了
Stage.scaleMode = "noScale";
赋值的小技巧.当so有值的时候,scale就等于so的值.否这就等于150
使用MovieCliploader的类
var mclListener:Object = new Object();
//开始load时调用的函数
mclListener.onLoadStart = function(target_mc:MovieClip) {
target_mc.startTimer = getTimer();
};
//完成load时调用的函数
mclListener.onLoadComplete = function(target_mc:MovieClip) {
target_mc.completeTimer = getTimer();
};
//完成load后刚开始运行调用的函数
mclListener.onLoadInit = function(target_mc:MovieClip) {
trace("读取完毕");
var timerMS:Number = target_mc.completeTimer-target_mc.startTimer;
target_mc.createTextField("timer_txt", target_mc.getNextHighestDepth(), 0, target_mc._height, target_mc._width, 22);
target_mc.timer_txt.text = "loaded in "+timerMS+" ms.";
};
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip("http://www.helpexamples.com/flash/images/image1.jpg", image_mc);
改变原点的位置,把原点从左上角移到场景中心
y=Stage.height/2; // Stage.height是场景的高;
笛卡尔坐标算法的简单基础一
// 观察者与屏幕的距离
D = 200;
// 控制旋转的速度
hutu = 0.001;
// 角、弧度的转换
b = hutu*180/Math.PI;
//定义A点和B点的坐标.A[1],A[2],A[3]分别是x,y,z
pos_a = new Array(100, 0, 100);
pos_b = new Array(50, 50, 0);
};
//让他们X轴旋转的公式
mya.onEnterFrame = function() {
//★★★★★★★★★★★★★
//================A点的旋转
temp_x = pos_a[0];
temp_y = pos_a[1]*Math.cos(b)-pos_a[2]*Math.sin(b);
temp_z = pos_a[2]*Math.cos(b)+pos_a[1]*Math.sin(b);
//更新现在的位置
pos_a = new Array(temp_x, temp_y, temp_z);
//投影到二维坐标
ratio = D/(D+pos_a[2]);
perspective_pos_a_x = temp_x*ratio;
perspective_pos_a_y = temp_y*ratio;
//★★★★★★★★★★★★★
//================b点的旋转
temp_x = pos_b[0];
temp_y = pos_b[1]*Math.cos(b)-pos_b[2]*Math.sin(b);
temp_z = pos_b[2]*Math.cos(b)+pos_b[1]*Math.sin(b);
//更新现在的位置
pos_b = new Array(temp_x, temp_y, temp_z);
//投影到二维坐标
ratio = D/(D+pos_b[2]);
perspective_pos_b_x = temp_x*ratio;
perspective_pos_b_y = temp_y*ratio;
//trace("b点的坐标是"+perspective_pos_b_x+perspective_pos_b_y);
//定义B小球位置
myb._x = perspective_pos_b_x;
myb._y = perspective_pos_b_y;
myb._xscale = myb._yscale=50*ratio;
//定义A小球位置
mya._x = perspective_pos_a_x;
mya._y = perspective_pos_a_y;
mya._xscale = mya._yscale=50*ratio;
//画线
_root.createEmptyMovieClip("triangle_mc", 1);
with (triangle_mc) {
lineStyle(1, 0xFF00FF, 100);
//moveTo(200, 200);
lineTo(perspective_pos_a_x, perspective_pos_a_y);
lineTo(perspective_pos_b_x, perspective_pos_b_y);
}
updateAfterEvent(mya.onEnterFrame);
};
笛卡尔坐标算法的简单基础二之小球
_root.onLoad = function() {
// 定义复制小球的数目
shumu = 8;
// 让原始小球消失
qiu._x = 6000;
// 复制小球,作为正方体的八个顶点
for (var i = 0; i<shumu; i++) {
duplicateMovieClip("qiu", "qiu"+i, i);
}
// 从三维坐标中取正方体的8个顶点的坐标,保存在数组中
qiu_pos_x = new Array(100, 0, 0, 100, 100, 0, 0, 100);
qiu_pos_y = new Array(100, 100, 100, 100, 0, 0, 0, 0);
qiu_pos_z
= new Array(50, 50, -50, -50, 50, 50, -50, -50);
// 观察者与屏幕的距离
D = 200;
// 控制旋转的速度
hutu = 0.001;
// 角、弧度的转换
b = hutu*180/Math.PI;
};
_root.onEnterFrame = function() {
for (var i = 0; i<shumu; i++) {
// 按公式计算
x1 = qiu_pos_x[i];
y1 = qiu_pos_y[i]*Math.cos(b)-qiu_pos_z[i]*Math.sin(b);
z1 = qiu_pos_z[i]*Math.cos(b)+qiu_pos_y[i]*Math.sin(b);
// 更新数组元素
qiu_pos_x[i] = x1;
qiu_pos_y[i] = y1;
qiu_pos_z[i] = z1;
// 按公式计算
ratio = D/(D+z1);
perspective_x = x1*ratio;
perspective_y = y1*ratio;
//设置球的坐标
_root["qiu"+i]._x = 275+perspective_x;
_root["qiu"+i]._y = 200-perspective_y;
// 球的大小
_root["qiu"+i]._xscale = _root["qiu"+i]._yscale=50*ratio;
// 球的层次
_root["qiu"+i].swapDepths(10000-qiu_pos_z[i]);
//设置透明度
_root["qiu"+i]._alpha = 100*ratio;
_root.createEmptyMovieClip("triangle_mc", 1000);
with (triangle_mc) {
lineStyle(1, 0xFF00FF, 100);
//第一个面
moveTo(_root["qiu"+0]._x, _root["qiu"+0]._y);
lineTo(_root["qiu"+1]._x, _root["qiu"+1]._y);
lineTo(_root["qiu"+2]._x, _root["qiu"+2]._y);
lineTo(_root["qiu"+3]._x, _root["qiu"+3]._y);
lineTo(_root["qiu"+0]._x, _root["qiu"+0]._y);
//第二个面
moveTo(_root["qiu"+4]._x, _root["qiu"+4]._y);
lineTo(_root["qiu"+5]._x, _root["qiu"+5]._y);
lineTo(_root["qiu"+6]._x, _root["qiu"+6]._y);
lineTo(_root["qiu"+7]._x, _root["qiu"+7]._y);
lineTo(_root["qiu"+4]._x, _root["qiu"+4]._y);
}
}
};
flash里函数传递数组的写法.主要要是写成_root.jj.selected 就会出错的
function chkdone(jj:String) {
//trace(jj);
if (_root[jj].selected == false) {
trace("还有选择题没有选择");
}
//trace(_root.kk1.selected);
}
返回一个n到m之间的k个互异随机数
function randomKdiffer(n, m, k) {
arrayK = [];
var i = 0;
while (i<k) {
a = random(m-n+1)+n;
for (var j = 0; j<i; j++) {
if (a == arrayK[j]) {
break;
}
}
if (j == i) {
arrayK[i] = a;
i++;
}
}
return arrayK;
}
k = randomKdiffer(1, 10, 5);
trace(k);
trace(k[3]);
用flash控制窗口缩放的代码
键盘监测
keyListener.onKeyDown = function() {
trace("DOWN -> Code:"+Key.getCode()+"\tACSII:"+Key.getAscii()+"\tKey:"+chr(Key.getAscii()));
gotoAndPlay(2);
};
Key.addListener(keyListener);
stop();
关于读取了xml以后.用xml里面的http地址来作为该mc链接地址的解决方法
//一个mc读取出来以后.就应该立即给该MC赋值URL
mc.onRelease = function() {
//这里的7代表这里mc以后的数字
trace(myRimg_URL_arr[mc._name.substring(7)]);
getURL(myRimg_URL_arr[mc._name.substring(7)], "_blank");
&#
160; };
}
啊添写的窗口自适应代码
缓动公式
function movemc(mymc:MovieClip, xx:Number) {
trace(mymc);
//加速度设定
var speedadd = 0.2;
//放置多次点击
if (mymc.moving<>true) {
//缓冲接近
mymc.onEnterFrame = function() {
this.moving = true;
mymc._x += (xx-mymc._x)*speedadd;
trace(Math.abs(xx-mymc._x));
if (Math.abs(xx-mymc._x)<=1) {
this.moving = false;
mymc._x = xx;
trace("停止距离"+mymc._x);
delete mymc.onEnterFrame;
}
};
}
}
获得一个mc的名字中某部分字符串
一个名字为tempname的mc.他的第三位以后的名字是"pname"
trace(tempname._name.substring(3));
淡入淡出函数
function MCalpha(MC:Object, InorOut:String) {
//透明速度
speed = 5;
if (InorOut == "out") {
MC.onEnterFrame = function() {
this._alpha -= speed;
if (this._alpha<=0) {
this._alpha = 0;
delete this.onEnterFrame;
}
};
} else if (InorOut == "in") {
MC.onEnterFrame = function() {
this._alpha += speed;
if (this._alpha>=100) {
this._alpha = 100;
delete this.onEnterFrame;
}
};
}
}
鼠标点击监听
someListener.onMouseDown = function() {
trace("撒旦发生的");
};
Mouse.addListener(someListener);
判断动态文本长度,包含中英文
//长度判断
var TXT_W = 0;
for (i=0; i<txt.length; ++i) {
ascii = txt.charCodeAt(i);
trace(txt.charAt(i)+"="+ascii);
//122以后的都是中文
if (ascii<122) {
//英文加1
TXT_W = TXT_W+1;
} else {
//中文加2
TXT_W = TXT_W+2;
}
}
trace("TXT_W========"+TXT_W);
判断是否点击了该MC
if (this.hitTest(_xmouse, _ymouse)) {
trace("点到我了") }
};
替换字符函数
{
return s = s.split(o).join(r);
};
dd = "asdfasdf我阿斯我顿飞";
trace(replace(dd, "我", "你"));
用js定义一个div的位置 div的ID=branding
window.onresize = resizeDiv;
window.onscroll = resizeDiv;
function resizeDiv()
{
if((document.body.clientWidth)>957){
var docWidth = document.documentElement.clientWidth;
var docHeight = document.documentElement.clientHeight;
//document.getElementById("branding").style.top = (do
cument.body.clientHeight)*0.8;
document.getElementById("branding").style.top=document.body.scrollTop +(document.body.clientHeight)*0.8;
document.getElementById("branding").style.left = (document.body.clientWidth/2)+300;
}else{}
}
window.onload=function()//用window的onload事件,窗体加载完毕的时候
{
resizeDiv()
}
</script>
大猪,你真的很像很想那个人……
到底是不是呢????????
在这灌水了,不好意思!期待你的回复!