Flash cs3 中用代码画圆的问题,这是我找到的一段代码,请各位帮下忙,解释下工作原理。

我现在想把幕布背景改成一个扇形,要求只能在扇形里画圆,怎么实现呢?package{importflash.display.*;importflash.display.Sp... 我现在想把幕布背景改成一个扇形,要求只能在扇形里画圆,怎么实现呢?
package{
import flash.display.*;
import flash.display.Sprite;
import flash.events.MouseEvent;

public class DrawCircleTest extends MovieClip
{
private var _canvas:Sprite;

public function Sprite(){
addFrameScript(0,APP1);
addFrameScript(0,APP2);
return;
}
public function DrawCircleTest():void
{
initCanvas();
registerEventHandlers();

}

private function initCanvas():void
{
_canvas = new Sprite();

_canvas.graphics.beginFill(0xF0F0F0);
_canvas.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
_canvas.graphics.endFill();

_canvas.graphics.lineStyle(2, 0x000000);
addChild(_canvas);
}

private function registerEventHandlers():void
{
_canvas.addEventListener(MouseEvent.CLICK, onCanvasClick);
}

private function onCanvasClick(event:MouseEvent):void
{
_canvas.graphics.drawCircle(event.localX, event.localY, 10);
}
}
}
展开
 我来答
百度网友e1914d5
2012-12-02 · 超过16用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:45.9万
展开全部
根目录下导入包:
import flash.display.*;
import flash.display.Sprite;
import flash.events.MouseEvent;
类DrawCircleTest继承与display类的子类:MovieClip(影片剪辑)
定义私有属性:_canvas (Sprite类),用于动画的类.
定义pulinc的函数Sprite(),在父类舞台stage里执行:当addFrameScript(0,app1),目标帧数为0,就是时间轴上的播放头播放到指定帧时所执行的指定函数app1.app1该回调函数实际上是一个事件处理函数,下面一个同理。(注:public function Sprite()这样去定义构造函数不赞同的。少用)
该类的DrawCircleTest()构造函数里去解析2个函数,用于初始化:
initCanvas();
registerEventHandlers();
在下面定义上面的2个函数,
_canvas = new Sprite();(不规范)
_canvas.graphics.beginFill(0xF0F0F0);
_canvas.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
_canvas.graphics.endFill();
_canvas.graphics.lineStyle(2, 0x000000);
addChild(_canvas);

创建个实例:var _canvas:Sprite = new Sprite();
在舞台中: 开始画矩形(颜色:0xF0F0F0[16进制]) ,注册点(圆心):(x:0; y:0),以舞台的宽和高为准。border为2的0x000000的边框。

private function registerEventHandlers():void
{
_canvas.addEventListener(MouseEvent.CLICK, onCanvasClick);
}

private function onCanvasClick(event:MouseEvent):void
{
_canvas.graphics.drawCircle(event.localX, event.localY, 10);
}
}
}
#该实例注册点击鼠标事件,触发 onCanvasClick(),在 onCanvasClick(),画个圆,相对鼠标的的坐标的x,y轴10倍。(ps:10这个参数不是很清楚,你baidu下吧)。
大概的意思就这样,程序是顺着解析下来,就是该类的构造函数插入2个函数。还有:
addFrameScript(0,APP1);
addFrameScript(0,APP2);
是会在时间轴运行到哪帧时,去调用APP1和APP2 函数。其实这个是个未公开的函数,还可以传多个参数进来:
MovieClip.addFrameScript(0,frame1Method,1,frame2Method, 2,frame3Method);
也就是说可以同时指定多组触发事件,在1,2,3帧上同时指定触发的动作,如果有不止一个动作事件指定在相同的一个帧上,那么,只有后者的动作会被触发~!
完毕,接收吧!(别忘了给分啦。亲)
来自:求助得到的回答
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
百度网友e246de7
2012-11-30 · TA获得超过144个赞
知道小有建树答主
回答量:88
采纳率:80%
帮助的人:141万
展开全部

我直接把代码贴过来了,注意有2点程序改动和1点舞台改动:

1. 去掉了下面这个方法,这个方法一定是你不小心从别的地方复制过来的,这里完全没用加上反而会报错。

public function Sprite(){

      addFrameScript(0,APP1);

      addFrameScript(0,APP2);

      return;

  }


2.initCanvas方法中的语句“addChild(_canvas);”,被改为“cont.addChild(_canvas);”。


3.舞台上,新建一个空的影片剪辑,实例名取为“cont”,拖到舞台上,放在(0,0)点,然后给它画一个扇形的遮罩,就OK了。



一下是代码,关键的地方给你注释了一下。

package 

{

    import flash.display.*;

    import flash.display.Sprite;

    import flash.events.MouseEvent;

   

   

   public class DrawCircleTest extends MovieClip

    {

        private var _canvas:Sprite

       

       

        public function DrawCircleTest():void

        {

            initCanvas();

            registerEventHandlers();

        }

        private function initCanvas():void

        {

            //画了一个长宽和舞台一样,颜色为0xF0F0F0的区域

            _canvas = new Sprite();

            _canvas.graphics.beginFill(0xF0F0F0);

            _canvas.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);

            _canvas.graphics.endFill();

           

           _canvas.graphics.lineStyle(2, 0x000000);

            //设置画线的颜色为0x000000,就是你的圆圈的颜色,这里是黑色

            cont.addChild(_canvas);

         }

        private function registerEventHandlers():void

        {

            _canvas.addEventListener(MouseEvent.CLICK, onCanvasClick);

            //帧听鼠标点击事件,点一下画一个圆

        }

        private function onCanvasClick(event:MouseEvent):void

        {

            _canvas.graphics.drawCircle(event.localX, event.localY, 10);

            //画圈,以鼠标的位置为中心点,半径为10的圆

        }

    }

}





已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式