关于FLASH AS3代码问题~~
下面一段代码:package{importflash.display.MovieClip;importflash.events.MouseEvent;importflas...
下面一段代码:
package{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
//导入重要类
public class main extends MovieClip{
private var targetMove:Yukuri;
public function main(){
stage.addEventListener(MouseEvent.MOUSE_MOVE,onMove)
//给舞台加入鼠标移动侦听事件
}
private function onMove(e:MouseEvent):void{
for (var i:int=0,i<10,i++){
targetMove=new Yukuri();
addChild(targetMove);
targetMove.x=mouseX;
targetMove.y=mouseY;
targetMove.scaleX=_yukuri.scaleY=Math.random()*1.5+0.5;
targetMove.rotation=Math.random()*360-180;
/*建立一个for循环,循环10次,将对象实例化并作为子元件导入当前列表,设定产生yukuri的坐标位置
在鼠标的坐标,每次生成随机倍速为0.5到2的yukuri,角度变化在-180°到180°之间
*/
targetMove.disX=Math.random()*4-2;
targetMove.disY=Math.random()*6-3;
/*自定义yukuri的随机移动速度*/
targetMove.al=Math.random()*0.01+0.01;
/*自定义yukuri的随机透明度减少值*/
targetMove.disRotation=Math.random()*30-15;
/*自定义yukuri的随机旋转速度*/
}
targetMove.addEventListener(Event.ENTER_FRAME,onFrame)
//给_yukuri加入帧频侦听事件
}
private function onFrame(e.Event):void{
var yukuri:Yukuri=e.target as Yukuri;
//建立一个新变量yukuri,但它依旧取自于Yukuri这个自定义类
yukuri.X+=targetMove.disX;
yukuri.Y+=targetMove.disY;
yukuri.alpha-=targetMove.al;
yukuri.rotation+=targetMove.disRotation;
//设定每帧yukuri的变化
if (yukuri.alpha=0) {
targetMove.removeEventListener(Event.ENTER_FRAME,onFrame);
removeChild(targetMove);
}//建立一个条件函数,若yukuri透明度为0,移除帧频侦听事件和该子元件
}
}
}
测试之后报出了语法错误
13 行 1084: 语法错误: semicolon 应在 lessthan 之前。
14 行 1084: 语法错误: colon 应在 assign 之前。
15 行 1084: 语法错误: rightbrace 应在 semicolon 之前。
31 行 1084: 语法错误: semicolon 应在 targetMove 之前。
33 行 1084: 语法错误: identifier 应在 rightbrace 之前。
33 行 1084: 语法错误: rightparen 应在 rightbrace 之前。
33 行 1084: 语法错误: identifier 应在 rightbrace 之前。
34 行 1084: 语法错误: rightparen 应在 dot 之前。
检查半天也没检查出来错在哪里,就想问一下是哪里少了什么符号吗? 展开
package{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
//导入重要类
public class main extends MovieClip{
private var targetMove:Yukuri;
public function main(){
stage.addEventListener(MouseEvent.MOUSE_MOVE,onMove)
//给舞台加入鼠标移动侦听事件
}
private function onMove(e:MouseEvent):void{
for (var i:int=0,i<10,i++){
targetMove=new Yukuri();
addChild(targetMove);
targetMove.x=mouseX;
targetMove.y=mouseY;
targetMove.scaleX=_yukuri.scaleY=Math.random()*1.5+0.5;
targetMove.rotation=Math.random()*360-180;
/*建立一个for循环,循环10次,将对象实例化并作为子元件导入当前列表,设定产生yukuri的坐标位置
在鼠标的坐标,每次生成随机倍速为0.5到2的yukuri,角度变化在-180°到180°之间
*/
targetMove.disX=Math.random()*4-2;
targetMove.disY=Math.random()*6-3;
/*自定义yukuri的随机移动速度*/
targetMove.al=Math.random()*0.01+0.01;
/*自定义yukuri的随机透明度减少值*/
targetMove.disRotation=Math.random()*30-15;
/*自定义yukuri的随机旋转速度*/
}
targetMove.addEventListener(Event.ENTER_FRAME,onFrame)
//给_yukuri加入帧频侦听事件
}
private function onFrame(e.Event):void{
var yukuri:Yukuri=e.target as Yukuri;
//建立一个新变量yukuri,但它依旧取自于Yukuri这个自定义类
yukuri.X+=targetMove.disX;
yukuri.Y+=targetMove.disY;
yukuri.alpha-=targetMove.al;
yukuri.rotation+=targetMove.disRotation;
//设定每帧yukuri的变化
if (yukuri.alpha=0) {
targetMove.removeEventListener(Event.ENTER_FRAME,onFrame);
removeChild(targetMove);
}//建立一个条件函数,若yukuri透明度为0,移除帧频侦听事件和该子元件
}
}
}
测试之后报出了语法错误
13 行 1084: 语法错误: semicolon 应在 lessthan 之前。
14 行 1084: 语法错误: colon 应在 assign 之前。
15 行 1084: 语法错误: rightbrace 应在 semicolon 之前。
31 行 1084: 语法错误: semicolon 应在 targetMove 之前。
33 行 1084: 语法错误: identifier 应在 rightbrace 之前。
33 行 1084: 语法错误: rightparen 应在 rightbrace 之前。
33 行 1084: 语法错误: identifier 应在 rightbrace 之前。
34 行 1084: 语法错误: rightparen 应在 dot 之前。
检查半天也没检查出来错在哪里,就想问一下是哪里少了什么符号吗? 展开
1个回答
展开全部
第13行的for语句子句之间应用分号“;”隔开而不是逗号","
第34行的e:Event而不是e.Event。
这两个地方粗心了= =
此外还有错误,这里面没显示出来:
第18行targetMove.scaleY而不是_yukuri.scaleY
第42行应该用==而不是=,判等而非赋值。
第43~44行应改为:
yukuri.removeEventListener(Event.ENTER_FRAME,onFrame);
yukuri.parent.removeChild(yukuri);
否则在运行时报错。
还有,
32行
targetMove.addEventListener(Event.ENTER_FRAME,onFrame);
要放到for循环里面。
37~40改为:
yukuri.X+=yukuri.disX;
yukuri.Y+=yukuri.disY;
yukuri.alpha-=yukuri.al;
yukuri.rotation+=yukuri.disRotation;
还有一个性能问题,42行要改成
yukuri.alpha<=0
才不会有内存泄露
改过以后的完整代码这样:
package{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
//导入重要类
public class Main extends MovieClip{
private var targetMove:Yukuri;
public function Main(){
stage.addEventListener(MouseEvent.MOUSE_MOVE,onMove)
//给舞台加入鼠标移动侦听事件
}
private function onMove(e:MouseEvent):void{
for (var i:int=0;i<10;i++){
targetMove=new Yukuri();
addChild(targetMove);
targetMove.x=mouseX;
targetMove.y=mouseY;
targetMove.scaleX=targetMove.scaleY=Math.random()*1.5+0.5;
targetMove.rotation=Math.random()*360-180;
/*建立一个for循环,循环10次,将对象实例化并作为子元件导入当前列表,设定产生yukuri的坐标位置
在鼠标的坐标,每次生成随机倍速为0.5到2的yukuri,角度变化在-180°到180°之间
*/
targetMove.disX=Math.random()*4-2;
targetMove.disY=Math.random()*6-3;
/*自定义yukuri的随机移动速度*/
targetMove.al=Math.random()*0.01+0.01;
/*自定义yukuri的随机透明度减少值*/
targetMove.disRotation=Math.random()*30-15;
/*自定义yukuri的随机旋转速度*/
targetMove.addEventListener(Event.ENTER_FRAME,onFrame);
}
//给_yukuri加入帧频侦听事件
}
private function onFrame(e:Event):void{
var yukuri:Yukuri=e.target as Yukuri;
//建立一个新变量yukuri,但它依旧取自于Yukuri这个自定义类
yukuri.X+=yukuri.disX;
yukuri.Y+=yukuri.disY;
yukuri.alpha-=yukuri.al;
yukuri.rotation+=yukuri.disRotation;
//设定每帧yukuri的变化
if (yukuri.alpha<=0) {
yukuri.removeEventListener(Event.ENTER_FRAME,onFrame);
yukuri.parent.removeChild(yukuri);
}//建立一个条件函数,若yukuri透明度为0,移除帧频侦听事件和该子元件
}
}
}
第34行的e:Event而不是e.Event。
这两个地方粗心了= =
此外还有错误,这里面没显示出来:
第18行targetMove.scaleY而不是_yukuri.scaleY
第42行应该用==而不是=,判等而非赋值。
第43~44行应改为:
yukuri.removeEventListener(Event.ENTER_FRAME,onFrame);
yukuri.parent.removeChild(yukuri);
否则在运行时报错。
还有,
32行
targetMove.addEventListener(Event.ENTER_FRAME,onFrame);
要放到for循环里面。
37~40改为:
yukuri.X+=yukuri.disX;
yukuri.Y+=yukuri.disY;
yukuri.alpha-=yukuri.al;
yukuri.rotation+=yukuri.disRotation;
还有一个性能问题,42行要改成
yukuri.alpha<=0
才不会有内存泄露
改过以后的完整代码这样:
package{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
//导入重要类
public class Main extends MovieClip{
private var targetMove:Yukuri;
public function Main(){
stage.addEventListener(MouseEvent.MOUSE_MOVE,onMove)
//给舞台加入鼠标移动侦听事件
}
private function onMove(e:MouseEvent):void{
for (var i:int=0;i<10;i++){
targetMove=new Yukuri();
addChild(targetMove);
targetMove.x=mouseX;
targetMove.y=mouseY;
targetMove.scaleX=targetMove.scaleY=Math.random()*1.5+0.5;
targetMove.rotation=Math.random()*360-180;
/*建立一个for循环,循环10次,将对象实例化并作为子元件导入当前列表,设定产生yukuri的坐标位置
在鼠标的坐标,每次生成随机倍速为0.5到2的yukuri,角度变化在-180°到180°之间
*/
targetMove.disX=Math.random()*4-2;
targetMove.disY=Math.random()*6-3;
/*自定义yukuri的随机移动速度*/
targetMove.al=Math.random()*0.01+0.01;
/*自定义yukuri的随机透明度减少值*/
targetMove.disRotation=Math.random()*30-15;
/*自定义yukuri的随机旋转速度*/
targetMove.addEventListener(Event.ENTER_FRAME,onFrame);
}
//给_yukuri加入帧频侦听事件
}
private function onFrame(e:Event):void{
var yukuri:Yukuri=e.target as Yukuri;
//建立一个新变量yukuri,但它依旧取自于Yukuri这个自定义类
yukuri.X+=yukuri.disX;
yukuri.Y+=yukuri.disY;
yukuri.alpha-=yukuri.al;
yukuri.rotation+=yukuri.disRotation;
//设定每帧yukuri的变化
if (yukuri.alpha<=0) {
yukuri.removeEventListener(Event.ENTER_FRAME,onFrame);
yukuri.parent.removeChild(yukuri);
}//建立一个条件函数,若yukuri透明度为0,移除帧频侦听事件和该子元件
}
}
}
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询