作业帮 > 综合 > 作业

AS3.0在函数外怎样同时得到a1,a2,b1,b2参数

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/08/05 03:39:32
AS3.0在函数外怎样同时得到a1,a2,b1,b2参数
package {

import flash.display.MovieClip;
import flash.display.Sprite;
import flash.geom.Point;
import flash.events.MouseEvent;
import flash.events.DataEvent;
import flash.utils.Timer;


public class Trowball extends MovieClip {
private var p1:Point;
private var p2:Point;
private var v1:Number;
private var v2:Number;

 public function Trowball() {

var ball=new BALL();
addChild(ball);
ball.x=stage.stageHeight/2;
ball.y=stage.stageWidth/2;


function down(evt:MouseEvent):void{
evt.target.startDrag();
 p1=new Point(mouseX,mouseY);
//p1.x=mouseX;
//p1.y=mouseY;

 var date:Date=new Date();
 var a1:Number=date.seconds;
 var b1:Number=date.milliseconds;


trace();
trace("移动前坐标"+p1);
trace("鼠标移动秒数"+a1);
trace("鼠标移动毫秒数"+b1);
}

 function up(evt:MouseEvent):void{
evt.target.stopDrag();
 p2=new Point(mouseX,mouseY);
 var date:Date=new Date();
 var a2:Number=date.seconds;;
 var b2:Number=date.milliseconds;

trace("移动后坐标"+p2);
trace("鼠标移动秒数"+a2);
trace("鼠标移动毫秒数"+b2);


}



ball.addEventListener(MouseEvent.MOUSE_DOWN,down);
ball.addEventListener(MouseEvent.MOUSE_UP,up);


 }
}

}
AS3.0在函数外怎样同时得到a1,a2,b1,b2参数
首先你要明白,函数内的变量是局部变量,只能在函数内调用,函数外是不能调用的,要想让函数内的变量让函数外调用,必须引用其值,你可以声明一个类全局变量,将函数内变量的值传递给这个全局变量就可以了.具体是这样做的:
package {
\x05
\x05import flash.display.MovieClip;
\x05import flash.display.Sprite;
\x05import flash.geom.Point;
\x05import flash.events.MouseEvent;
\x05import flash.events.DataEvent;
\x05import flash.utils.Timer;
\x05
\x05
\x05public class Trowball extends MovieClip {
\x05\x05private var p1:Point;
\x05\x05private var p2:Point;
\x05\x05private var v1:Number;
\x05\x05private var v2:Number;
\x05\x05private var ga1:Number;
private var gb1:Number;
private var ga2:Number;
private var gb2:Number;
\x05 public function Trowball() {
\x05\x05
\x05\x05var ball=new BALL();
\x05\x05addChild(ball);
\x05\x05ball.x=stage.stageHeight/2;
\x05\x05ball.y=stage.stageWidth/2;
\x05\x05
\x05\x05\x05
\x05\x05function down(evt:MouseEvent):void{
\x05\x05\x05evt.target.startDrag();
\x05\x05 p1=new Point(mouseX,mouseY);
\x05\x05\x05//p1.x=mouseX;
\x05\x05\x05//p1.y=mouseY;
\x05\x05\x05
\x05\x05 var date:Date=new Date();
\x05\x05 var a1:Number=date.seconds;
ga1=a1;
\x05 var b1:Number=date.milliseconds;
gb1=b1;
\x05\x05
\x05\x05\x05trace();
\x05\x05\x05trace("移动前坐标"+p1);
\x05\x05\x05trace("鼠标移动秒数"+a1);
\x05\x05\x05trace("鼠标移动毫秒数"+b1);
\x05\x05\x05\x05}
\x05
\x05 function up(evt:MouseEvent):void{
\x05\x05\x05evt.target.stopDrag();
\x05\x05 p2=new Point(mouseX,mouseY);
\x05\x05 var date:Date=new Date();
\x05\x05 var a2:Number=date.seconds;;
\x05 var b2:Number=date.milliseconds;
\x05\x05 ga2=a2;
gb2=b2;
\x05\x05\x05trace("移动后坐标"+p2);
\x05\x05\x05trace("鼠标移动秒数"+a2);
\x05\x05\x05trace("鼠标移动毫秒数"+b2);
\x05\x05\x05
\x05\x05
\x05\x05}
\x05\x05
\x05\x05
\x05\x05
\x05\x05ball.addEventListener(MouseEvent.MOUSE_DOWN,down);
\x05\x05ball.addEventListener(MouseEvent.MOUSE_UP,up);
\x05\x05
\x05
\x05 }
\x05}
\x05
}
这样你就可以在类内任何地方调用这些值了.只是换成了ga1,ga2,gb1,gb2;
再问: 感谢回答我的问题 但是我这样输入后 在函数外trace里面的函数值 输出的都是Number的默认值NAN 还是不行啊
再答: package { import flash.display.MovieClip; import flash.display.Sprite; import flash.geom.Point; import flash.events.MouseEvent; import flash.events.DataEvent; import flash.utils.Timer; public class Trowball extends MovieClip { private var p1:Point; private var p2:Point; private var v1:Number; private var v2:Number; private var ga1:Number; private var gb1:Number; private var ga2:Number; private var gb2:Number; public function Trowball() { //你看你这晨,把所有的类成员都写在了构造函数里了。这是不行的。构造函数是初始化的地方。不应该这样写。 var ball = new BALL ; addChild(ball); ball.x = stage.stageHeight / 2; ball.y = stage.stageWidth / 2; ball.addEventListener(MouseEvent.MOUSE_DOWN,down); ball.addEventListener(MouseEvent.MOUSE_UP,up); } //在这里加个大花括号,将最後的花括号去掉就可以了。而且函数前面最好加上private。 private function down(evt:MouseEvent):void { evt.target.startDrag(); p1 = new Point(mouseX,mouseY); //p1.x=mouseX; //p1.y=mouseY; var date:Date = new Date ; var a1:Number = date.seconds; ga1 = a1; var b1:Number = date.milliseconds; gb1 = b1; trace(); trace(("移动前坐标" + p1)); trace(("鼠标移动秒数" + a1)); trace(("鼠标移动毫秒数" + b1)); } private function up(evt:MouseEvent):void { evt.target.stopDrag(); p2 = new Point(mouseX,mouseY); var date:Date = new Date ; var a2:Number = date.seconds; var b2:Number = date.milliseconds; ga2 = a2; gb2 = b2; trace(("移动后坐标" + p2)); trace(("鼠标移动秒数" + a2)); trace(("鼠标移动毫秒数" + b2)); //现在我们来计算一下你所求的值 trace("x方向移动了" +( p2.x - p1.x) + "象素。","y方向移动了" +( p2.y - p1.y) + "象素;"); trace("鼠标移动的时间(秒):"+(ga2-ga1)); trace("鼠标移动的毫秒数:"+(gb2-gb1)) } } } 这是修改後的类,你的类有问题。其实你是想实现按下鼠标拖动对象,松开鼠标停止拖动,然後获取坐标及时间。