as3.0绘制直线的问题

package{importflash.display.MovieClip;importflash.events.MouseEvent;importflash.event... package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.Sprite;
public class mc extends Sprite{
var fx:Number;
var fy:Number;
public function mc(){
this.addEventListener(MouseEvent.MOUSE_DOWN,mhd);
this.addEventListener(MouseEvent.MOUSE_UP,uhd);
}
我是想在舞台上放的影片剪辑(mc)实例上绘制直线,起点和终点分别由鼠标按下和释放确定,下面是元件mc的连接类,为什么绘制结果老是从(0,0)点开始绘制呢?
function mhd(e:MouseEvent){
var fx=this.mouseX;
var fy=this.mouseY;
}
function uhd(e:MouseEvent){
var line:Sprite=new Sprite();
line.graphics.moveTo(fx,fy);
line.graphics.lineStyle(2,0xf0f0f0);
line.graphics.lineTo(this.mouseX,this.mouseY);
this.addChild(line);
}
}
}
不小心把说明写在代码中间了部分了,大家能看明白吧
展开
 我来答
手机用户51461
推荐于2016-12-01 · TA获得超过115个赞
知道答主
回答量:191
采纳率:0%
帮助的人:0
展开全部
建一个FLA,直接贴到第一帧代码栏里就行了。

stop();
var stage_width :Number = 550;
var stage_height:Number = 400;
var speed:Number = 0.5;
var base_x:Number = 0;
var base_y:Number = 0;
var axis_x:Number = 0;
var axis_y:Number = 0;
var direction_x:Boolean = true;
var direction_y:Boolean = true;
var arr:Array = new Array();

addEventListener(Event.ENTER_FRAME,drawOnFrame);

function drawOnFrame(e:Event):void{
if(axis_x > stage_width || axis_x < 0){
direction_x = !direction_x;
base_x = axis_x;
base_y = axis_y;
}
if(axis_y > stage_height || axis_y < 0){
direction_y = !direction_y;
base_x = axis_x;
base_y = axis_y;
}
if(direction_x){
axis_x += speed;
}else{
axis_x -= speed;
}
if(direction_y){
axis_y += speed;
}else{
axis_y -= speed;
}
var line = new Sprite();
line.graphics.moveTo(base_x,base_y);
line.graphics.lineStyle(1,0x000000);
line.graphics.lineTo(axis_x,axis_y);
addChild(line);
arr.push(line);

if(arr.length >= 2){
if(axis_x == 550 || axis_x == 0 || axis_y == 0 || axis_y == 400 ){
arr.splice(0,1);
}else{
removeChild(arr[0]);
arr.splice(0,1);
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牵着你的手544
推荐于2016-05-24 · 知道合伙人教育行家
牵着你的手544
知道合伙人教育行家
采纳数:5277 获赞数:39797
学生

向TA提问 私信TA
展开全部
建一个FLA,直接贴到第一帧代码栏里就行了。

stop();
var stage_width :Number = 550;
var stage_height:Number = 400;
var speed:Number = 0.5;
var base_x:Number = 0;
var base_y:Number = 0;
var axis_x:Number = 0;
var axis_y:Number = 0;
var direction_x:Boolean = true;
var direction_y:Boolean = true;
var arr:Array = new Array();

addEventListener(Event.ENTER_FRAME,drawOnFrame);

function drawOnFrame(e:Event):void{
if(axis_x > stage_width || axis_x < 0){
direction_x = !direction_x;
base_x = axis_x;
base_y = axis_y;
}
if(axis_y > stage_height || axis_y < 0){
direction_y = !direction_y;
base_x = axis_x;
base_y = axis_y;
}
if(direction_x){
axis_x += speed;
}else{
axis_x -= speed;
}
if(direction_y){
axis_y += speed;
}else{
axis_y -= speed;
}
var line = new Sprite();
line.graphics.moveTo(base_x,base_y);
line.graphics.lineStyle(1,0x000000);
line.graphics.lineTo(axis_x,axis_y);
addChild(line);
arr.push(line);

if(arr.length >= 2){
if(axis_x == 550 || axis_x == 0 || axis_y == 0 || axis_y == 400 ){
arr.splice(0,1);
}else{
removeChild(arr[0]);
arr.splice(0,1);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式