Flex绘图测试程序
来源:互联网 发布:美工教学视频 编辑:程序博客网 时间:2024/06/10 02:44
http://www.cssflex.com/huatu.asp
最近几天一直在研究Flex和ActionScript,没什么时间做Swing了,虽然现在对Flex还有点晕,但我发现我已经慢慢开始喜欢他了 刚刚完成了一个基于ActionScript的Flex绘图程序,和用Swing的Graphics2D比较了一下,其中也走了不少弯路,下面和大家分享一下:
MXXML:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="drawPanel()" width="600" height="400">
<mx:Script>
<![CDATA[
import draw.DrawPanel;
import mx.core.UIComponent;
public function drawPanel():void{
var component:UIComponent=new UIComponent();
var panel:DrawPanel=new DrawPanel();
myCanvas.addChild(component);
component.addChild(panel);
}
]]>
</mx:Script>
<mx:Canvas x="0" y="0" width="100%" height="100%" id="myCanvas">
</mx:Canvas>
</mx:Application>
---------------------------------------------------------------------------------------------------------------------------------
DrawPanel.as:
package draw
{
//Sprite里面没有任何内容的容器
//还可以在影片剪辑上绘制
import flash.display.*;
import flash.events.*;
import flash.geom.Point;
import flash.utils.*;
public class DrawPanel extends Sprite
{
private var circle:Shape;
private var first:Point=new Point();
private var second:Point=new Point();
public function DrawPanel()
{
super();
this.graphics.beginFill(0xffff11);
this.graphics.drawRect(0, 0, 600, 400);
this.graphics.endFill( );
this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
this.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
private function onMouseDown(event:MouseEvent):void {
circle=new Shape();
circle.graphics.lineStyle(2, 0, 1,false,LineScaleMode.NORMAL,CapsStyle.ROUND,JointStyle.BEVEL,3);
this.addChild(circle);
first.x=mouseX;
first.y=mouseY;
second.x=mouseX;
second.y=mouseY;
// this.graphics.moveTo(mouseX, mouseY);//定位当前鼠标坐标
this.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
}
private function onMouseUp(event:MouseEvent):void {
this.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
circle.graphics.clear();//清除掉了
circle.graphics.lineStyle(2, 0, 1,false,LineScaleMode.NORMAL,CapsStyle.ROUND,JointStyle.BEVEL,3);
second.x =mouseX;
second.y = mouseY;
var preX:Number = Math.min(first.x, second.x);
var preY:Number = Math.min(first.y, second.y);
var cWidth:Number = Math.abs(first.x - second.x);
var cHeight:Number = Math.abs(first.y - second.y);
circle.graphics.drawEllipse(preX,preY,cWidth,cHeight);
}
private function onMouseMove(event:MouseEvent):void {
circle.graphics.clear();
circle.graphics.lineStyle(2, 0, 1,false,LineScaleMode.NORMAL,CapsStyle.ROUND,JointStyle.BEVEL,3);
second.x =mouseX;
second.y = mouseY;
var preX:Number = Math.min(first.x, second.x);
var preY:Number = Math.min(first.y, second.y);
var cWidth:Number = Math.abs(first.x - second.x);
var cHeight:Number = Math.abs(first.y - second.y);
circle.graphics.drawEllipse(preX,preY,cWidth,cHeight);
}
}
}
几个需要注意的地方:
1.ActionScript里面没有Graphics2D中XOR模式,必须调用当前graphics.clear()方法,并且重新设置lineStyle();再进行绘制
2.Sprite如果里面没有内容,他是不会显示在组件上面的,所有我们必须在其parent组件大小确定的情况下,在Sprite初始化时绘制一个与其外层组件大小一致矩形,把Sprite支撑开。我们才能够在里面绘制其他图形。
3.因为Sprite不能直接嵌入Flex,所以我们必须把它用UIComponent封装一下,在把UIComponent放在一个Flex容器中。
- Flex绘图测试程序
- Flex绘图测试程序
- Flex 程序性能测试
- Flex程序性能测试
- ArcGIS API for Flex 客户端绘图性能测试
- [原创]QTP测试Flex程序实例
- selenium对flex程序的自动化测试
- flex绘图网站
- Flex+BlazeDs+Java的第一个测试程序
- Flex 实现B/S绘图
- FLEX学习-5 SVG绘图
- flex程序
- 绘图程序浏览感想
- 简单小程序绘图
- 绘图程序坐标设计
- 绘图程序参考书籍
- Opencv鼠标绘图程序
- MFC绘图程序
- PL SQL 用记录集接收数据
- Knife接口解析
- 汉字数目与阿拉伯数字转化之二
- 我不能下载东西
- 在C#中使用API回调函数的方法
- Flex绘图测试程序
- C#中捕捉对话框的文本内容 EnumChildWindows
- js实现trim
- CSDN 2009 英雄大会老紫竹的发言全文
- GridView数据绑定的顺序
- 南极 V43 手柄
- Grid行数据获取
- JDBC 连接字符串 -- SQL Server 2000 和 SQL Server 2005 的区别
- MySQL数据类型参考