zoukankan      html  css  js  c++  java
  • Flex的mxml中调用绘图As代码

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    			   xmlns:s="library://ns.adobe.com/flex/spark" 
    			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
    			   applicationComplete="initView()">
    	<mx:Label x="10" y="10" text="As3.0 -> Flex!">
    	</mx:Label>
    	<mx:Canvas x="0" y="0" id="canvas" width="100%" height="100%">
    	</mx:Canvas>
    	<fx:Declarations>
    		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
    	</fx:Declarations>
    	<fx:Script>
    		<![CDATA[
    			//需要使用Canvas来包含UIComponent,然后将自己定义的As类添加到Component中
    			import mx.core.UIComponent;
    			private function initView():void
    			{
    				var component:UIComponent=new UIComponent();
    				canvas.addChild(component);
    				component.addChild(new MyDemo());
    			}
    		]]>
    	</fx:Script>
    </s:Application>
    

    MyDemo.as:

    package
    {
    	import flash.display.Shape;
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import flash.events.KeyboardEvent;
    	import flash.events.MouseEvent;
    	import flash.events.TimerEvent;
    	import flash.utils.Timer;
    	import mx.controls.Label;
    	
    	/**
    	 * 将上一次记录的Blog <<flex(入门)之timer的使用,键盘,鼠标的监听>> 的As代码放到flex的Web项目中去调用,这个时候会有问题
    	 * 原因出在了舞台上,然后在网上搜索了一下,问题解决了。
    	 * 
    	 * */
    	
    	//窗体大小,绘制帧率
    	public class MyDemo extends Sprite
    	{
    		private var circle:Shape;
    		private var label:Label;
    		private var timer:Timer;
    		public function MyDemo()
    		{
    			super();
    			label = new Label();
    			label.x = 30;
    			label.y = 30;
    			addChild(label);
    			circle = new Shape();
    			circle.x = 50;
    			circle.y = 100;
    			addChild(circle);
    			circle.graphics.beginFill(0xee2f2f);
    			circle.graphics.drawCircle(circle.x,circle.y,40);
    			circle.addEventListener(Event.ENTER_FRAME,changePos);//每帧调用changePos函数
    			//------------------需要增加Event.ADDED_TO_STAGE时间监听-------------------//
    			this.addEventListener(Event.ADDED_TO_STAGE,addToStageHandler);
    			//------------------通过addToStageHandler()来添加舞台监听-------------------//
    			timer = new Timer(1000,5); //设置延迟时间是1秒,循环执行5次timerExcute()
    			timer.addEventListener(TimerEvent.TIMER,timerExcute);
    			timer.addEventListener(TimerEvent.TIMER_COMPLETE,timerComplete);//执行完成后调用timerComplete
    			timer.start();//启动timer
    		}
    		
    		public function changePos(event:Event):void
    		{
    			if(circle.y >= 300)
    			{
    				circle.y = 1;
    			}else if(0<circle.y && circle.y < 300)
    			{	
    				circle.y+=5;
    			}
    		}
    		
    		//不可以直接在flex文件中调用as的代码(抛空对象异常),然后as代码中直接使用stage对象,
    		public function addToStageHandler(event:Event):void
    		{
    			stage.addEventListener(MouseEvent.CLICK,onClick); //舞台上添加鼠标点击监听事件
    			stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);//舞台添加键盘监听
    		}
    		
    		//在点击的地方产生绿色方形
    		public function onClick(event:MouseEvent):void
    		{
    			var rect:Shape = new Shape();
    			addChild(rect);
    			rect.graphics.beginFill(0x11ff00);
    			rect.graphics.drawRect(event.stageX,event.stageY,20,20);
    		}
    		
    		
    		public function keyDown(event:KeyboardEvent):void
    		{
    			var count:int = 0
    			if(event.keyCode == 13) //监听Enter键
    			{	
    				var rect:Shape = new Shape();
    				addChild(rect);
    				rect.graphics.beginFill(0x00f1f0);
    				rect.graphics.drawRect(Math.random()*400,Math.random()*300,10,10);
    			}
    		}
    		
    		public function timerExcute(event:TimerEvent):void
    		{
    			var rect:Shape = new Shape();
    			addChild(rect);
    			rect.graphics.beginFill(0x0f11f0);
    			rect.graphics.drawRect(Math.random()*400,Math.random()*300,10,10);
    		}
    		
    		public function timerComplete(event:TimerEvent):void
    		{
    			var rect:Shape = new Shape();
    			addChild(rect);
    			rect.graphics.beginFill(0x000000);
    			rect.graphics.drawRect(Math.random()*400,Math.random()*300,30,60);
    		}
    	}
    }


  • 相关阅读:
    sqlserver 2000备份文件还原到sqlserver 2005(2008)
    .dll文件有什么用?
    汇编片段
    以POST方式请求数据的Ajax实现方式
    有两个数据据服务器上有两个一样结构的数据库,现想将一服务器上的一数据库里的一个表的一部份记录插入到另一服务器上的一数据库的一表中.
    揭开ASP.NET中Cookie编程的奥秘(2)
    商城网店初步完成了,很多不足
    ajax上传(xmlhttp上传文件突破大小限制)
    查询优化
    金山词霸”屏幕取词技术揭密(讨论稿)
  • 原文地址:https://www.cnblogs.com/vokie/p/3602064.html
Copyright © 2011-2022 走看看