AS创建文本框
_root.createTextField("mytext", 1, 50, 50, 100,20);
mytext.multilance=false;//设置单行;
mytext.text="这是文本框"//文本赋值
然后是删除这个创建的文本框:
mytext.removeTextField();//删除!
如果大家要创建一个换行的文本框,就需要加上:
mytext.wordWrap =true //指示文本字段自动换行
mytext.autoSize=true //指定文本字段的自动对齐和大小调整
TextField 类的方法摘要
TextField.addListener() 注册一个对象,以便在调用 onChanged 和 onScroller 事件处理函数时接收通知。
TextField.getFontList() 返回播放器的主机系统上字体名称的数组。
TextField.getDepth() 返回文本字段的深度。
TextField.getNewTextFormat() 获取分配给新插入文本的默认文本格式。
TextField.getTextFormat() 返回包含文本字段中一些或全部文本的格式信息的 TextFormat
对象。
TextField.removeListener() 删除侦听器对象。
TextField.removeTextField() 删除使用 MovieClip.createTextField() 创建的文本字段。
TextField.replaceSel() 替换当前的所选内容。
TextField.setNewTextFormat() 为由用户或方法插入的文本设置 TextFormat 对象。
TextField.setTextFormat() 为文本字段中指定范围内的文本设置一个 TextFormat 对象。
TextField 类的属性摘要
TextField._alpha 文本字段实例的透明度值。
TextField.autoSize 控制文本字段的自动对齐和大小调整。
TextField.background 指示文本字段是否具有背景填充。
TextField.backgroundColor 指示背景填充的颜色。
TextField.border 指示文本字段是否具有边框。
TextField.borderColor 指示边框的颜色。
TextField.bottomScroll 文本字段中最下面的可见行。只读。
TextField.embedFonts 指示文本字段是使用嵌入字体轮廓还是使用设备字体。
TextField._height 文本字段实例的高度,以像素为单位。它只影响文本字段的边框,不影响边框的粗细和文本字体大小。
TextField._highquality 指示 SWF 文件的呈现品质。
TextField.hscroll 指示文本字段的水平滚动值。
TextField.html 指示文本字段的当前最大滚动位置。
TextField.htmlText 包含文本字段内容的 HTML 表示形式。
TextField.length 文本字段中的字符数。只读。
TextField.maxChars 文本字段最多可容纳的字符数。
TextField.maxhscroll TextField.hscroll 的最大值。只读。
TextField.maxscroll TextField.scroll 的最大值。只读。
TextField.menu 将 ContextMenu 对象与文本字段关联。
TextField.mouseWheelEnabled 指示当鼠标指针停在文本字段上且用户滚动鼠标滚轮时,Flash Player 是否应自动滚动多行文本字段。
TextField.multiline 指示文本字段是否包含多行。
TextField._name 文本字段实例的实例名称。
TextField._parent 对此实例的父级实例的引用;其类型为 Button 或 MovieClip。
TextField.password 指示文本字段是否隐藏输入字符。
TextField._quality 指示 SWF 文件的呈现品质。
TextField.restrict 用户可输入文本字段的字符集。
TextField._rotation 文本字段实例的旋转度数。
TextField.scroll 指示文本字段的当前滚动位置。
TextField.selectable 指示文本字段是否可选。
TextField._soundbuftime 在声音进入流之前,必须预先缓冲的声音的时间量。
TextField.tabEnabled 指示影片剪辑是否包括在 Tab 键的自动排序中。
TextField.tabIndex 指示对象的 Tab 键顺序。
TextField._target 指定文本字段实例的目标路径。只读。
TextField.text 文本字段中的当前文本。
TextField.textColor 文本字段中当前文本的颜色。
TextField.textHeight 文本字段边框的高度。
TextField.textWidth 文本字段边框的宽度。
TextField.type 指示文本字段是输入文本字段还是动态文本字段。
TextField._url 创建文本字段实例的 SWF 文件的 URL。只读。
TextField.variable 与文本字段关联的变量名。
TextField._visible 确定文本字段实例是隐藏还是可见的布尔值。
TextField._width 文本字段实例的宽度,以像素为单位。它只影响文本字段的边框,不影响边框的粗细和文本字体大小。
TextField.wordWrap 指示文本字段是否自动换行。
TextField._x 文本字段实例的 x 坐标
TextField._xmouse 指针相对于文本字段实例的 x 坐标。只读。
TextField._xscale 指定水平缩放文本字段实例的百分比的值。
TextField._y 文本字段实例的 y 坐标。
TextField._ymouse 指针相对于文本字段实例的 y 坐标。只读。
TextField._yscale 指定垂直缩放文本字段实例的百分比的值。
TextField 类的事件处理函数摘要
事件处理函数
TextField.onChanged
在文本字段更改时调用。
TextField.onKillFocus
在文本字段失去焦点时调用。
TextField.onScroller
在文本字段滚动属性之一发生更改时调用。
TextField.onSetFocus
在文本字段接收焦点时调用。
TextField 类的侦听器摘要
TextField.onChanged
在文本字段更改时获得通知。
TextField.onScroller
在文本字段的 scroll 或 maxscroll 属性更改时获得通知。
attachSound的部分常用语句
aa=new Sound();//创建一个新音乐
aa.attachSound("jgw");//将库中标识符为jgw的音乐导出播放(标识符在库中链接菜单中命名)
aa.start(0,10000);//音乐播放秒偏移量为0,播放10000次
aa.stop();//停止播放aa这个声音
如果你不想看到Flash的About和设置菜单,把下面的代码放到第一帧就行了:
_root.createTextField("danger", 999, 0, 0, Stage.width, Stage.height);
好了,现在换了一个新菜单.
注:这个适合用在没有交互的动画上,如果你需要使用按钮就去掉.
(这个好像是转载自Dengjie的Blog)
限制flash只能在服务器上观看
在第一帧中加入如下代码:
fscommand ("allowscale", "0");
url = "http://goday.gtma.cn";;//'" target="_blank" >http://goday.gtma.cn"; //这个换成你的域名
if (_url.substring(0, 20)<>url) { //那个0(h),20(n)就是指从第一个字符开始向后数到第20个字符(包括“://”和“.”符号),这个请自行根据上面的url=后面的http://goday.gtma.cn来更改
gotoAndPlay (2);
} else {
gotoAndPlay (3);
}
第二帧加入:
stop ();
第三帧加入:
stop ();
然后把正式内容放在第三帧就好了,第二帧放入出错内容
当然有人说用播放就可以跳过,这里是给出一个思路,你可以用loadmove等等等等等等等等的方法来加载于否正式影片
用ShareObject在本地保存数据(下面帖子有篇文章将较详细讲解)
例(本地保存数据,要想远程保存数据,也可以,跟下边的例子差不多,只不过要安装 flashcom 需要$ 蛮贵的)
function test(){
this.userinfo_so=SharedObject.getLocal("test/userinfo","/");
if(this.userinfo_so.data.info == null){
this.userinfo_so.data.info=new Object();
this.userinfo_so.data.info.username=new Array();
this.userinfo_so.data.info.email=new Array();
}
this.setUserinfo=setUserinfo;
this.getUserinfo=getUserinfo;
this.delUserinfo=delUserinfo;
}
function setUserinfo (username,email)
{
with(this.userinfo_so.data){
uLength=info.username.length;
eLength=info.email.length;
info.username[uLength]=username;
info.email[eLength]=email;
}
var status=this.userinfo_so.flush();
}
function delUserinfo(){
this.userinfo_so.data.info=null;
this.userinfo_so.flush();
}
function getUserinfo (){
for(var i=0;i trace(i+":"+this.userinfo_so.data.info.username);
}
}
var gg_so=new test();
gg_so.setUserinfo("glghcool","[email protected]");
gg_so.getUserinfo();
外部载入文本
动态文本框必须放在MC里面
system.useCodepage = true;
loadVariables ("1.txt",mc)
文本里的最前面是:动态文本框的变量名=你的内容易
判断用户名和密码是否正确,以及根据不同用户名进入不同帧数
用户名的文本框为myname,密码框为mypass
on (release) {
if (myname == "用户名1" && mypass == "密码1") {
gotoAndPlay (85);
} else if (myname == "用户名2" && mypass != "密码2") {
gotoAndPlay (82);
} else if (myname != "用户名3" && mypass == "密码3") {
gotoAndPlay (83);
} else if (myname != "用户名4" && mypass != "密码4") {
gotoAndPlay (84);
}
}
FLASH无手指按钮的制作
只需要在第一帧加上:
buttonname.useHandCursor=0
buttonname是你按钮的实例名(不是库里面的名字,属性面板里面的实例名)
FLASH实现设为首页、加入收藏、打开一个制定的新窗口
设为首页:
on (release) {
getURL("javascript :void(document.links[0].style.behavior='url(#default#homepage)');void document.links[0].setHomePage('http://www.flashempire.com/&;#39;);", "_self", "POST");
}
加入收藏夹:
on (release) {
getURL("javascript :void window.external.AddFavorite('http://www.flash8.net&;#39;,'闪吧');", "_self", "POST");
}
在Flash中打开一个定制的浏览器新窗口
Get URL ("java script:window.open("new.htm","newwin","width=320,height=320");")
Loading制作资料(Loading的制作都是使用这些AS,那些样子不同的Loading只是表现手法不一样,AS都是大同小异的,自己看看就明白了)
建一个MC.做一个载入条动画为100祯.拖入主场景中命名实例名为Bar,在载入条下面用文字工具拖一个动态文本框,在右下角加入变量名Percent
第一祯加入祯标签loop,并打开动作面板,输入下面代码:
bt=int((_root.getBytesTotal())/1000);
l=int((_root.getBytesLoaded())/1000);
p=int((l/bt)*100);
Percent=p+"%";//Percent为动态文本变量名.即显示百分比
_root.Bar.gotoAndStop(p);//Bar为载入条的实例名
在第二祯加入
if(p==100){
stopAllSounds();
gotoAndPlay("main");
}else{
gotoAndPlay("loop");
}
动画开始的那一祯加上祯标签main或者这里可以改为跳到下一个场景名或某一祯也可以
loading 制作中的主要AS:
x=Math.floor((_framesloaded/_totalframes)*100);//_framesloaded 表示已下栽的帧数_totalframes 总的帧数
setProperty("_root.load",_xscale,x);// _xscale横向缩放百分比的值
jindu="影片已下载"+_root.x+"%\n 请耐心等待";
第二帧:
输入如下AS:if(x<100){
gotoAndPlay(1);
}else{ jindu=" 下载完毕!";
}
用鼠标画线
onMouseDown=function () {
lineStyle(2,0*000000,100)
lineTo(_xmouse,_ymouse)
}
onMouseMove = function() {
if (a) {
lineStyle(2,0x000000,100);//指定线条的粗度为2,颜色为黑色,透明度为100;
lineTo(_xmouse, _ymouse); //画线至鼠标所在位置;
}
updateAfterEvent(); //强制刷新;Flash 强制进行显示刷新工作。该语句不依赖于时间帧的触发。
};
onMouseDown = function() {
a = true; //鼠标按下,给a变量赋值true,即执行上面的if后面括号内的语句,开始画线;
moveTo(_xmouse, _ymouse);//重新定位开始点;
};
onMouseUp = function() {
a = false; //鼠标松开,给a变量赋值false,不执行上面的if后面括号内的语句,停止画线;
};
几个需要掌握的AS
1、var a = Math.abs(-7); // 求绝对值(这里是求-7的)
2、function myFunction(myNum) {
var newNum = myNum+5;
return newNum;
}
trace(myFunction(8));
//定义 调用并输出函数值
3、多数情况下,需要用到鼠标光标在主场景中的位置,所以可以使用_root._xmouse和_root._ymouse表示。
onClipEvent (enterFrame) {
_x = _root._xmouse;
_y = _root._ymouse;
}//让影片剪辑和鼠标保持相同坐标
4、将矩形影片剪辑作为遮罩图形
在矩形影片剪辑的动作面板中添加如下ActionScript:
onClipEvent (load) {
xs = _width;
ys = _height;
}
onClipEvent (enterFrame) {
_xscale = 100*(_root._xmouse-_x)/(xs/2);
_yscale = 100*(_root._ymouse-_y)/(ys/2);
}
在load事件中,用变量xs和ys取得影片剪辑初始状态下的宽度和高度值。在enterFrame事件中,计算鼠标位置与矩形影片剪辑中心 的距离,算出它与矩形宽度和高度值的比值,然后作为_xscale和_yscale的值。该动画实现移动鼠标位置以改变遮罩效果
5、Array对象(动作面板的“对象”/“核心”目录)即数组,它用来记录成组的相关或相似变量。创建一个空的数组:
myArray = new Array();
如下所示的ActionScript创建一个确定值的数组并在输出窗口中显示每个元素的值:
weekDay = new Array("SUN", "MON", "TUE", "WED", "TUR", "FRI", "SAT");
for (var i = 0; i<7; i++) {
trace(weekDay);
}
数组中还可以嵌套数组,即构成多维数组,如下所示:
polyArray = new Array();
for (var i = 0; i<3; i++) {
polyArray = new Array(i*3+1, i*3+2, i*3+3, i*3+4);
trace(polyArray[0]+" "+polyArray[1]+" "+polyArray[2]+" "+polyArray[3]);
}
输出窗口中将显示:
1 2 3 4
4 5 6 7
7 8 9 10
判断本机Flash播放器版本并进行下载
ss=System.capabilities.version;
if(substring(ss,5,1)<>"7"){getURL("http://www.macromedia.com/cn";,_blank);}//'" target="_blank" >http://www.macromedia.com/cn",_blank);}//那个7就是版本号
用奇偶判断来做一个按钮的声音开关
第一帧加入(第一帧空帧):
t=0 //给t赋初值
第二帧加入:
stop(); //停止在第二帧
ms=new Sound //新建一个声音对象ms
ms.attachSound("sound") //空声音对象从库中调用连接名为sound的声音
ms.start() //ms开始播放
ms.onSoundComplete=function () { //当ms这个声音播放完后执行以下AS
ms.start //重复播放ms
}
第二帧上面的控制按钮加入
on (release) { //当鼠标松开的时候执行下面AS
t=t+1 //t的值等于本身的值加1
if (t%2==1) { //如果T取摸2等于1
ms.stop() //则ms停止播放
b=ms.position/1000 //b的值等于现在ms声音停止的位置
} else { //否则
ms.start(b) //ms从刚刚停止的地方(b)开始播放
}
}
实现倒放(可以自行联想作出许多不间断缩放效果,如动态按钮等,曾经我写过一篇这样的教程):
给放在场景中比如有40桢的MC添加如下语句
onClipEvnt(load){
gotoAndStop(40);//影片载入时就跳转到40桢并停止
}
onClipEvent(enterFrame){
prevFrame();//不断的播放前一桢,
}
一些简单的AS和一些程序思路,掌握最好:
***************************************************************************************
1.复制MC并随机设定子MC的相关属性:
duplicateMovieClip("mc","mc"+i,10+i);
setProperty("mc"+i,_x,random(400) );//x坐标
setProperty("mc"+i,_y,random(300) );//y坐标
setProperty("mc"+i,_alpha,random(100) );//透明度属性
i++;
if(i>200){//设定复制的个数;
i=1;
}
*****************************************************************************************
2.文字的逐个出现(打字效果)
Frame1: text="引号内是要出现的字";
ll = text.length;// 表示text文本的字符数;
i = 1;//用于控制输出的变量;
Frame4:
if (i text1 = text.substring(0,i);//从第0个字符开始抽取显示,抽取长度为i;
i++;
}
Frame5:
gotoAndPlay(4);
*****************************************************************************************
3.冒泡法排序:
for(i;i for(j=n;j<=i+1;j--){//内层循环;
if(a[j] temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;//交换位置;
}
*****************************************************************************************
4.插入法排序(算法复杂性比冒泡法要小):
for(i=2;i<=n;i++){
j=i;
if(a[j] temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
j--; }
}*****************************************************************************************
5.一个按钮控制声音的播放与停止:
on(release)
{a=a+1;
if(a%2==1){//奇偶判断;
mysound.stop();
_root.b=int(ji.position/1000);//记录下停止时播放的位置;
}
else{ mysound.start(_root.b);//从上一次停止的位置开始继续播放;
}
}
*****************************************************************************************
6.MC以恒定速度旋转
onClipEvent (enterFrame) {
_rotation +=6;//设定每次的旋转角度值;
}
*****************************************************************************************
和WEB结合设计中用层来遮住FLASH
1.在flash的parameters里加入
2.
遮住场景以外的部分
Stage.scaleMode = "exactFit";
--------------------------------------------------------------------------------
ding8285斑竹13楼加入,感激中!希望大家都来补足!
判断输入是否为数字的函数:
on(release){
if(Number(pass)==NaN){//判断输入是否为数字
pass="";
}
检查E-MAIL的函数:
function checkemail(email) {
var str = new String(email);
var arr_email = str.split("@");
if ((arr_email.length != 2) || (arr_email[1].indexOf(".")<1)) {
return (false);
} else {
return (true);
}
}
延时函数:
function showTime(second, option) {
//延时函数
this.createEmptyMovieClip("t_mc", 9999);
t = getTimer();
f = false;
if ((getTimer()-t)>(second*1000)) {
option();
}
}
function go() {
//加入效果
jpg2._y = jpg2._y+77;
jpg2._alpha = jpg2._alpha-15;
}
fscommand("fullscreen", "true");
createEmptyMovieClip("jpg1", 1);
createEmptyMovieClip("jpg2", 2);
jpg1.loadMovie("1.jpg");
jpg2.loadMovie("2.jpg");
i = 0;
while (i<=100) {
showTime(0.1, go);
i = i+20;
}
FLASH中的保留小数的函
int(你的数*10)/10;
这样是保留一位
乘上100就是两位。以此类推
FLASH脚本实现关机
flash5:
fscommand ("exec","rundll"+chr(9)+"user.exe,exitwindows");
鼠标双击问题!
lsn_DbClick = new Object();
lsn_key = new Object();
lsn_DbClick.onMouseDown = function() {
clickTime = getTimer();
if (clickTime-lastClickTime<=300) {
trace("双击了鼠标");
}
lastClickTime = clickTime;
};
Mouse.addListener(lsn_DbClick);
time = getTimer()-down_time;
if (time<300) {
//双击后的代码部分
}
down_time = getTimer();
怎样在从另一个swf中获取变量
loadMovieNum("vars.swf", 1["POST"]);
_root.onEnterFrame = function() {
trace(_level1.myvab);
};
//当加载完毕后,输出就有值了...
鼠标右键及滚轮的代码
if Key.isDown(2){},(左键的代码是1)
左键:Key.isToggled(1)
右键:Key.isToggled(2)
滚轮:Key.isToggled(4)
滚轮1:Key.isToggled(4) PC机上用
滚轮2:Key.isToggled(3) MAC机上用
未知:Key.isToggled(3)
this.onEnterFrame = function() {
if (Key.isDown(2)){
trace("asdfjsdjkf");
}
}
实现TAB功能
获得焦点
使用Selection.setfocus()函数
举个例子:
例如你在主影片中有N个文本框,变量分别为text1,text2.....你想使影片一播放就把焦点落到第一个
文本框你就在第一FRAME 加AS如下:
Selection.setfocus("_root.text1");
我们可以举一反三
实现TAB功能 二
把这个N个文本框做组成一个数组
numarray=new array("_root.text1","_root.text2",....................."_root.textn");
首先获得鼠标焦点
x=Selection.getfocus();/* x 获得鼠标焦点的一个字符串
for(i=0;i<=n;i++)
{
if(numarray==x){
num=i; /*获得当前焦点在数组中的位置
}
然后编写TAB键功能
on (keyPress "") {
if (num==n){num=0;}
else{num++;}
Selection.setfocus(numarray[num]);
}
按钮能像window那样用Tab键来转换选择
用button.onKillFoucus
*两点间画直线
*画螺旋线
*画正方形、圆、椭圆
*抛物线
*正弦、余弦线
使用方法:加到帧中就可
// 画直线
// / x1, y1: 起点坐标
// x2, y2: 终点坐标
// k是层次
Movieclip.prototype.drawline = function(x1, y1, x2, y2, k) {
this.linestyle(1);
this.moveTo(x1, y1);
this.lineTo(x2, y2);
};
// 从(0,0)到(100,100)画一条线
_root.createEmptyMovieClip("mc", 10);
mc.drawline(0, 0, 100, 100);
// 画螺旋线
// w、h为宽和高
// f控制线的长短,用弧度表示
Movieclip.prototype.drawhelix = function(w, h, f) {
for (var i = 0; i this.lineTo(x=Math.sin(i)*i*w, y=Math.cos(i)*i*h);
this.linestyle(1);
}
};
// 以(100,100)为中心画螺旋线
_root.createEmptyMovieClip("luo", 1);
with (luo) {
drawhelix(5, 5, 13);
_x += 100;
_y += 100;
}
// 多功能函数,可画圆,椭圆,正多边形等
// n为边数
Movieclip.prototype.drawmany = function(w, h, n) {
f = 2*Math.PI;
for (var i = 0; i<=f/n*(n+1); i += f/n) {
this.lineTo(x=Math.sin(i)*w, y=Math.cos(i)*h);
this.linestyle(1);
}
};
// 画一正五边形
_root.createEmptyMovieClip("duobian", 2);
with (duobian) {
drawmany(50, 50, 5);
_x += 250;
_y += 100;
// 5为多边形的边数,6.3为2pai
}
// 画一椭圆
_root.createEmptyMovieClip("tuo", 3);
with (tuo) {
drawmany(25, 50, 100);
_x += 400;
_y += 100;
}
// 圆
_root.createEmptyMovieClip("yuan", 4);
with (yuan) {
drawmany(50, 50, 100);
_x += 400;
_y += 300;
}
// 抛物线
Movieclip.prototype.drawparabola = function(l, r, k) {
for (var i = -l; i<=r; i += 1) {
this.lineTo(x=i, y=k*i*i);
this.linestyle(1);
}
};
// 调用
_root.createEmptyMovieClip("parabola", 100);
with (parabola) {
drawparabola(50, 50, 0.05);
_x += 200;
_y += 200;
// 顶点坐标
}
// 正弦线,余弦类似
Movieclip.prototype.drawsin = function(n, k) {
for (var i = 0; i<=90*n; i += 1) {
this.lineTo(x=i, y=k*Math.sin(i*Math.PI/180));
this.linestyle(1);
}
};
_root.createEmptyMovieClip("sin", 101);
with (sin) {
drawsin(4, 50);
_x += 200;
_y += 200;
// 顶点坐标
}
Movieclip.prototype.drawwave = function(w, h) {
for (var i = 0; i<=6.3; i += 0.01) {
this.lineTo(x=w/Math.cos(i), y=h*Math.sin(i)/Math.cos(i));
this.linestyle(1);
}
};
_root.createEmptyMovieClip("wave", 105);
with (wave) {
drawwave(100, 100);
_x += 200;
_y += 200;
// 顶点坐标
}
一个动态文本设置alpha函数。
function setAlpha(obj,alpha){
var rgb="0x"+(255*(100-alpha)/100).toString(16);
rgb=rgb<<16|rgb<<8|rgb;
obj.backgroundColor|=rgb;
obj.borderColor|=rgb;
obj.textColor|=rgb; }
一个遍历level0中所有MC的instance name的函数。(可以修改一下用在其他范畴)
function readAllMC(){
this.MCitem ;
for(what in _level0){
if(typeof(_level0[what])=="movieclip"){
this.MCitem[what] = _level0[what];
}
}
}
设置MovieClip颜色:
MovieClip.prototype.setColor = function(c_color)
{
var mycolor = new Color(this);
mycolor.setRGB(c_color);
};
//调用:
yourMovieClip.setColor(0xff0000);
怎样设as,拒绝影片被人用loadMovie导入
以下as一定要设在最上层桢动作第一行有效
_root._name = "nn";
this.onEnterFrame = function() {
if (this._name != "nn" || _root.getDepth() != -16384) {
this.unloadMovie();
}
};