`
人帅刀猛
  • 浏览: 39437 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

显示对象平滑移动--本站转载

    博客分类:
  • flex
 
阅读更多

http://www.iteye.com/topic/162463#

 

用flex开发互动应用的时候经常会遇到显示对象与键盘鼠标的互动响应,通常的做法是添加侦听器来检测输入事件:

 

package {
	import flash.display.Sprite;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;	
	
	public class FlexTest extends Sprite
	{

		private var circle_sprite:Sprite;
		private var isUp:Boolean;
		private var isDown:Boolean;
		private var isLeft:Boolean;
		private var isRight:Boolean;
		private const  MOVE_SPEED:int=2;
		public function FlexTest()
		{
           circle_sprite=new Sprite();
           circle_sprite.graphics.beginFill(0xff0000);
		       circle_sprite.graphics.drawCircle(100,100,20);
		       circle_sprite.graphics.endFill();
           addChild(circle_sprite);
           stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down);
		}
		
	    private function key_down(evt:KeyboardEvent):void{
			if (evt.keyCode==Keyboard.LEFT){
			  circle_sprite.x-=MOVE_SPEED;
			}
			if (evt.keyCode==Keyboard.RIGHT){
			  circle_sprite.x+=MOVE_SPEED;
			}
			if (evt.keyCode==Keyboard.UP){
			  circle_sprite.y-=MOVE_SPEED;
			}
			if (evt.keyCode==Keyboard.DOWN){
			  circle_sprite.y+=MOVE_SPEED;
			}
		}

	}
	
}

 

以上实现,在使用过程中用方向键控制MC移动的时候为没有那么流畅,MC的移动明显有点卡,这是因为键盘按键如果一直按住不放,它也是间隔开来不断的重复触发按键事件,键盘的键值扫描有一定的间隔频率,因此产生了断断续续的感觉。

要想得到平滑的移动效果,可以通过添加事件侦听器侦听Event.ENTER_FRAME事件来解决

package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;	

public class FlexTest extends Sprite
{

	private var circle_sprite:Sprite;
	private var isUp:Boolean;
	private var isDown:Boolean;
	private var isLeft:Boolean;
	private var isRight:Boolean;
	private const  MOVE_SPEED:int=2;
	public function FlexTest()
	{
       circle_sprite=new Sprite();
       circle_sprite.graphics.beginFill(0x0080c0);
	     circle_sprite.graphics.drawCircle(100,100,20);
	     circle_sprite.graphics.endFill();
       addChild(circle_sprite);
       stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down);
       stage.addEventListener(KeyboardEvent.KEY_UP,key_up);
       stage.addEventListener(Event.ENTER_FRAME,enter_frame);
	}
	
	private function key_down(event:KeyboardEvent):void {
	
                    if(event.keyCode==Keyboard.UP){
                            isUp=true;
                            }
                    if (event.keyCode==Keyboard.DOWN) {
                            isDown=true;
                            }
                    if(event.keyCode==Keyboard.LEFT){
                            isLeft=true;
                            }
                    if(event.keyCode==Keyboard.RIGHT){
                            isRight=true;
                            }
                   
    }
	private function key_up(event:KeyboardEvent):void{
                    if(event.keyCode==Keyboard.UP){
                            isUp=false;
                            }
                    if (event.keyCode==Keyboard.DOWN) {
                            isDown=false;
                            }
                    if(event.keyCode==Keyboard.LEFT){
                            isLeft=false;
                            }
                    if(event.keyCode==Keyboard.RIGHT){
                            isRight=false;
                                }
                       
                }
                
 	public function enter_frame(event:Event):void{
 
                    if(isUp){
                            circle_sprite.y-=MOVE_SPEED;
                    }
                    if(isRight){
                    circle_sprite.x+=MOVE_SPEED;
                    }
                    if(isDown){
                            circle_sprite.y+=MOVE_SPEED;
                    }
                    if(isLeft){
                            circle_sprite.x-=MOVE_SPEED;
                    }
            }	                

}

}

 

分享到:
评论

相关推荐

    平滑移动 - 5.pdf

    【平滑移动】技术在滴滴出行乘客端的运用主要集中在改善车辆在地图上的显示效果,以提供更加真实、流畅的用户体验。这一技术涉及到多个方面的需求和解决方案。 **一、需求概述** 1. 背景:针对车辆在地图上显示的...

    高德地图自定义平滑移动

    本篇文章将详细讲解如何在高德地图API中实现自定义平滑移动的效果,并探讨为什么这种效果可能优于高德地图默认提供的功能。 平滑移动是指在地图上移动目标位置时,地图的移动过程不是瞬间完成,而是通过一系列平滑...

    伪+平滑wigner-ville的程序

    本代码实现了wigner-ville与伪wigner-ville,平滑wigner-ville,cohn wigner-ville 的频谱以及三维图像

    高德地图平滑移动

    在移动应用开发领域,平滑移动是提升用户体验的关键要素之一,特别是在地图应用中。高德地图作为一款广泛使用的地图服务,其平滑移动功能让用户在浏览地图时享受到流畅的视觉体验。本文将深入探讨如何在Android平台...

    高德地图Marker平滑移动

    在Android开发中,高德地图API提供了一个强大的功能,即让地图上的Marker实现平滑移动。这个功能在很多场景下非常实用,比如模拟导航、展示动态数据等。本示例项目"Android_Move_Example-master"显然是一个专为演示...

    MFC图形平滑移动_lungs3x7_MFC图形平滑移动_

    在本文中,我们将深入探讨如何在MFC(Microsoft Foundation Classes)框架中利用GDI+实现图形的平滑移动,并通过线程控制实现图形界面的高效交互。MFC是微软提供的一种C++类库,用于构建Windows应用程序,而GDI+是...

    高德地图轨迹平滑移动改进demo

    本项目聚焦于高德地图API的一个特定功能——轨迹平滑移动的改进,旨在帮助开发者更好地理解和实现这一效果。 轨迹平滑移动是指在地图上展示动态移动的路线,如车辆行驶轨迹、行人的行走路径等。在实际应用中,原始...

    利用百度地图API实现在地图车辆的平滑移动,轨迹回放,多台车辆同时平滑移动

    在本项目中,JavaScript用于处理用户交互,控制地图对象,以及定时更新车辆位置,实现平滑移动效果。 3. **地理坐标与地图坐标**:在百度地图API中,车辆的位置通常以经纬度表示,这需要开发者将实际的GPS数据转换...

    安卓百度地图marker实现类平滑移动

    在Android开发中,百度地图API是一个常用的工具,用于在地图上显示地理位置、进行导航等功能。在实际应用中,我们有时需要让地图上的Marker(标记)实现平滑移动的效果,例如模拟车辆行驶轨迹或者动画效果。以下将...

    地图聚合+滴滴打车小车平滑移动实现

    "地图聚合+滴滴打车小车平滑移动实现"这个主题聚焦于如何在地图应用中实现这一效果。这里我们将深入探讨如何利用地图API和特定的技术手段来达到车辆图标平滑、流畅地在地图上移动。 首先,我们要理解地图聚合...

    移动平均平滑算法-Python实现

    移动平均平滑是基于平均值的概念,通过计算序列中每个数据点周围的一定数量的数据点的平均值,来平滑时间序列中的噪声和波动,从而更清晰地观察序列的趋势和周期性。

    Arcgis实现单目标多目标地图轨迹平滑移动.zip

    本项目涉及的核心知识点是使用ArcGIS的API来实现地图上的目标轨迹平滑移动,包括单个目标和多个目标的动态展示。下面将详细阐述这些技术要点。 1. **ArcGIS API**: ArcGIS API是Esri公司提供的JavaScript库,用于...

    图像平滑---图像处理

    图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变,减小突变梯度,改善图像质量的图像处理方法。图像平滑的方法包括:插值方法,线性平滑方法,卷积法等等...

    Android车辆轨迹平滑移动

    在Android应用开发中,实现车辆轨迹平滑移动的效果是一项常见的需求,特别是在开发地图导航或位置追踪类应用时。本文将详细解析如何利用高德地图3D API实现这一功能,特别是针对旧版本API的使用。 首先,高德地图3D...

    双重平滑 EMA - MetaTrader 5脚本.zip

    双重平滑指数移动平均线(Double Smoothed EMA)是一种技术分析工具,常用于金融市场,尤其是外汇交易中,以提供更平滑的价格走势视图。它在MetaTrader 5(MT5)交易平台上的实现通常以脚本的形式存在,如"Double ...

    共享一个实用的一维信号平滑滤波方法五点三次平滑滤波-x.dat

    共享一个实用的一维信号平滑滤波方法五点三次平滑滤波-x.dat test.jpg 各种循环次数下的结果图 clear all close all clc V1 = rand*700 200; subplot 231; plot; ylim; grid;...

    共享一个实用的一维信号平滑滤波方法五点三次平滑滤波-figure_plot.m

    共享一个实用的一维信号平滑滤波方法五点三次平滑滤波-figure_plot.m test.jpg 各种循环次数下的结果图 clear all close all clc V1 = rand*700 200; subplot 231; plot; ...

    WPF 平滑移动效果

    在Windows Presentation Foundation(WPF)中,平滑移动效果是一种常用的技术,用于创建动态且吸引人的用户界面。这种效果能够使元素在屏幕上以流畅、自然的方式移动,为应用程序增添交互性和视觉吸引力。以下是对...

    修正的超级平滑器 - MetaTrader 5脚本.zip

    常见的平滑方法包括简单移动平均(SMA)、指数移动平均(EMA)、加权移动平均(WMA)等。"修正的超级平滑器" 可能是这些基础算法的变体,或者是结合了其他技术如滑动平均复合线(MACD)、平滑异同移动平均线(Bollinger Bands...

    平滑伪Wigner-Ville分布,可以运行。

    平滑伪Wigner-Ville分布(SPWVD)是一种时间-频率分析方法,它扩展了传统的Wigner-Ville分布(WVD),旨在解决WVD中出现的交叉项干扰问题,从而提供更为清晰的时间-频率图像。在信号处理领域,这种分布被广泛应用,...

Global site tag (gtag.js) - Google Analytics