`
kelaocai
  • 浏览: 197582 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Flex研究——显示对象平滑移动

阅读更多
用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;
                    }
            }	                

}

}


  • swf.rar (2.4 KB)
  • 描述: 效果对比
  • 下载次数: 533
分享到:
评论
1 楼 张洪财 2011-09-06  
study  ...........

相关推荐

    Flex从入门到实践——源代码(18,19,20章)

    此外,Flex提供了强大的动画功能,如Tween类可以实现平滑的属性变化,而Effect类则提供了预定义的动画效果,如淡入淡出、移动和旋转等,可以提升应用的视觉吸引力。 这些源代码将帮助读者更好地理解Flex的编程模式...

    flex-3D图像环绕虚拟现实代码

    首先,我们需要理解Flex的核心——ActionScript 3.0。这是一种强大的面向对象的编程语言,支持高级图形处理和3D渲染。在Flex中,我们可以使用Stage3D API来访问硬件加速的图形处理能力,从而实现高效的3D图像渲染。...

    Flex做的贝塞尔曲线

    在IT行业中,Flex是一种基于ActionScript 3.0的...通过学习和研究提供的AsTest文件,开发者不仅可以了解到贝塞尔曲线的基本原理,还能掌握在Flex中动态绘制和控制曲线的方法,为创建更加生动、有趣的RIA应用打下基础。

    Flex4权威指南源代码

    1. **Flex 4框架**:Flex 4引入了全新的组件架构——Spark组件模型,与早期的MX组件模型相比,Spark模型更注重设计模式和组件的可重用性。它允许开发者创建更加灵活和高性能的应用界面,同时支持自定义组件的深度...

    Flex 特效1-放大镜效果

    - **ShaderFilter**:ShaderFilter 类允许将 Shader 应用到 Flex 显示对象上,以此来改变其显示效果。在这个示例中,通过创建 ShaderFilter 实例并将它应用于目标图像,实现了放大镜效果。 ### 3. 放大镜效果实现 -...

    llk.rar_flex_flex llk

    在本次的分析中,我们将深入探讨如何使用Flex技术开发一个简单的连连看游戏——"llk.rar_flex_flex llk"。 首先,我们来看看"llk"这个项目名称,这可能是连连看游戏的简称。在Flex中,我们可以使用MXML来构建用户...

    tweenerFlexExplorer_as3_flexbuilder2.zip

    5. **动画效果实现**:在AS3中,Tweener库通常用于创建平滑的对象移动、旋转、缩放、颜色渐变等效果。开发者可以指定动画的起始值、结束值、持续时间、缓动类型等参数,实现复杂的时间序列动画。 6. **实践应用**:...

    flex画线

    除了静态画线之外,示例还包含了一个简单的动画效果——移动按钮。当点击“Move”按钮时,会触发`Testmove`函数,该函数通过`Move`类实现按钮的动画移动。根据按钮的位置,决定其最终移动到的目标位置: ```...

    FLEX4权威指南,随书资源代码

    1. **Flex 4的基本概念**:Flex 4引入了全新的组件架构——Spark,与之前的MX组件相比,Spark组件更加灵活,可定制性更强。Spark组件基于MXML和ActionScript 3.0,允许开发者通过声明式编程来创建复杂的UI。 2. **...

    Flex讲座讲义2(pdf)

    - **设计和开发工具**:如Creative Suite 3 和 Flex Builder,提供设计师与开发者之间平滑、高效的工作流程。 - **服务器端技术和云服务**:如ColdFusion、LiveCycle、Flash Media Server等,支持后端数据处理和...

    flutter练习——漫画客户端

    6. **动画**:Flutter的动画系统非常强大,通过AnimationController和Tween对象,可以轻松创建平滑、流畅的过渡效果。 7. **网络请求**:在漫画客户端中,可能会用到http或dio等库进行网络数据的获取,如JSON格式的...

    paopaolong.rar_actionscript_flex_game_paopaolong

    至于动画,Flex的强项之一就是创建平滑的帧动画,开发者可以利用Tween类和Timeline动画来实现泡泡的移动、旋转和消失效果。 最后,考虑到游戏的可玩性和挑战性,开发者还需要设计各种障碍物和特殊泡泡,如冰块泡泡...

    CSS参考手册——CSS基础

    4. **Flex布局**:弹性盒模型,适用于一维布局,可灵活调整元素顺序、大小和对齐方式。 5. **Grid布局**:二维网格布局,适用于复杂布局设计。 **六、定位** 1. **静态定位**(static):默认值,元素按正常文档流...

    电信设备-具有旋转铰链的移动通信终端.zip

    这种设计在手机和平板电脑的结合体——折叠屏设备中尤为常见,它提供了更大的显示面积,同时保持了便携性。 旋转铰链的工作原理通常涉及到精密的机械工程。它包括一系列的金属部件和连接件,如齿轮、滑块和弹簧,...

    五彩连珠游戏

    在Flex中,我们可以利用Tween类来实现珠子的平滑移动和消失效果,增强游戏的视觉体验。此外,为了增加游戏的挑战性和趣味性,还可以引入时间限制、道具系统以及难度等级等元素。 总结来说,五彩连珠游戏的开发涵盖...

    CircularProgressBar

    这种设计风格常用于移动应用、网页或者桌面软件中,用于显示任务的完成度,例如加载、下载进度等。"CircularProgressBar"允许开发者自定义其颜色、大小和样式,以适应不同的应用场景和品牌需求。 "自定义圆环的前景...

    自制滚动条

    在某些情况下,由于项目需求或特定环境限制,我们可能无法使用Flex框架提供的默认组件库,例如“组”(Group)来实现滚动功能。这时,自定义滚动条就显得尤为重要。本文将详细介绍如何使用AS3编写自己的滚动条组件,...

    微信小程序之小程序贪吃蛇

    本项目以“微信小程序之小程序贪吃蛇”为主题,将详细介绍如何利用微信小程序开发一款经典游戏——贪吃蛇。 贪吃蛇游戏自诞生以来就深受用户喜爱,它的基本规则是:蛇通过吃食物来增长,但随着长度的增加,移动空间...

    Actionscript3.0开发的射击小游戏

    ActionScript3.0是Adobe Flash Professional和Flex SDK中的编程语言,它以其强大的性能和丰富的功能为网页和游戏开发提供了无限可能。本项目——“三角也疯狂”,就是一个基于ActionScript3.0开发的射击小游戏,展示...

    纯css3鼠标滑过图片文字遮罩动画特效

    本主题聚焦于一个常见的网页元素——“鼠标滑过图片文字遮罩动画特效”,这是一种利用CSS3实现的动态效果,当用户将鼠标指针移动到图片上时,会显示出覆盖在图片上的文字信息,同时伴随着动画效果,增强了用户体验和...

Global site tag (gtag.js) - Google Analytics