用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
分享到:
- 2008-02-15 14:15
- 浏览 3246
- 评论(1)
- 论坛回复 / 浏览 (0 / 6212)
- 查看更多
相关推荐
此外,Flex提供了强大的动画功能,如Tween类可以实现平滑的属性变化,而Effect类则提供了预定义的动画效果,如淡入淡出、移动和旋转等,可以提升应用的视觉吸引力。 这些源代码将帮助读者更好地理解Flex的编程模式...
首先,我们需要理解Flex的核心——ActionScript 3.0。这是一种强大的面向对象的编程语言,支持高级图形处理和3D渲染。在Flex中,我们可以使用Stage3D API来访问硬件加速的图形处理能力,从而实现高效的3D图像渲染。...
在IT行业中,Flex是一种基于ActionScript 3.0的...通过学习和研究提供的AsTest文件,开发者不仅可以了解到贝塞尔曲线的基本原理,还能掌握在Flex中动态绘制和控制曲线的方法,为创建更加生动、有趣的RIA应用打下基础。
1. **Flex 4框架**:Flex 4引入了全新的组件架构——Spark组件模型,与早期的MX组件模型相比,Spark模型更注重设计模式和组件的可重用性。它允许开发者创建更加灵活和高性能的应用界面,同时支持自定义组件的深度...
- **ShaderFilter**:ShaderFilter 类允许将 Shader 应用到 Flex 显示对象上,以此来改变其显示效果。在这个示例中,通过创建 ShaderFilter 实例并将它应用于目标图像,实现了放大镜效果。 ### 3. 放大镜效果实现 -...
在本次的分析中,我们将深入探讨如何使用Flex技术开发一个简单的连连看游戏——"llk.rar_flex_flex llk"。 首先,我们来看看"llk"这个项目名称,这可能是连连看游戏的简称。在Flex中,我们可以使用MXML来构建用户...
5. **动画效果实现**:在AS3中,Tweener库通常用于创建平滑的对象移动、旋转、缩放、颜色渐变等效果。开发者可以指定动画的起始值、结束值、持续时间、缓动类型等参数,实现复杂的时间序列动画。 6. **实践应用**:...
除了静态画线之外,示例还包含了一个简单的动画效果——移动按钮。当点击“Move”按钮时,会触发`Testmove`函数,该函数通过`Move`类实现按钮的动画移动。根据按钮的位置,决定其最终移动到的目标位置: ```...
1. **Flex 4的基本概念**:Flex 4引入了全新的组件架构——Spark,与之前的MX组件相比,Spark组件更加灵活,可定制性更强。Spark组件基于MXML和ActionScript 3.0,允许开发者通过声明式编程来创建复杂的UI。 2. **...
- **设计和开发工具**:如Creative Suite 3 和 Flex Builder,提供设计师与开发者之间平滑、高效的工作流程。 - **服务器端技术和云服务**:如ColdFusion、LiveCycle、Flash Media Server等,支持后端数据处理和...
6. **动画**:Flutter的动画系统非常强大,通过AnimationController和Tween对象,可以轻松创建平滑、流畅的过渡效果。 7. **网络请求**:在漫画客户端中,可能会用到http或dio等库进行网络数据的获取,如JSON格式的...
至于动画,Flex的强项之一就是创建平滑的帧动画,开发者可以利用Tween类和Timeline动画来实现泡泡的移动、旋转和消失效果。 最后,考虑到游戏的可玩性和挑战性,开发者还需要设计各种障碍物和特殊泡泡,如冰块泡泡...
4. **Flex布局**:弹性盒模型,适用于一维布局,可灵活调整元素顺序、大小和对齐方式。 5. **Grid布局**:二维网格布局,适用于复杂布局设计。 **六、定位** 1. **静态定位**(static):默认值,元素按正常文档流...
这种设计在手机和平板电脑的结合体——折叠屏设备中尤为常见,它提供了更大的显示面积,同时保持了便携性。 旋转铰链的工作原理通常涉及到精密的机械工程。它包括一系列的金属部件和连接件,如齿轮、滑块和弹簧,...
在Flex中,我们可以利用Tween类来实现珠子的平滑移动和消失效果,增强游戏的视觉体验。此外,为了增加游戏的挑战性和趣味性,还可以引入时间限制、道具系统以及难度等级等元素。 总结来说,五彩连珠游戏的开发涵盖...
这种设计风格常用于移动应用、网页或者桌面软件中,用于显示任务的完成度,例如加载、下载进度等。"CircularProgressBar"允许开发者自定义其颜色、大小和样式,以适应不同的应用场景和品牌需求。 "自定义圆环的前景...
在某些情况下,由于项目需求或特定环境限制,我们可能无法使用Flex框架提供的默认组件库,例如“组”(Group)来实现滚动功能。这时,自定义滚动条就显得尤为重要。本文将详细介绍如何使用AS3编写自己的滚动条组件,...
本项目以“微信小程序之小程序贪吃蛇”为主题,将详细介绍如何利用微信小程序开发一款经典游戏——贪吃蛇。 贪吃蛇游戏自诞生以来就深受用户喜爱,它的基本规则是:蛇通过吃食物来增长,但随着长度的增加,移动空间...
ActionScript3.0是Adobe Flash Professional和Flex SDK中的编程语言,它以其强大的性能和丰富的功能为网页和游戏开发提供了无限可能。本项目——“三角也疯狂”,就是一个基于ActionScript3.0开发的射击小游戏,展示...
本主题聚焦于一个常见的网页元素——“鼠标滑过图片文字遮罩动画特效”,这是一种利用CSS3实现的动态效果,当用户将鼠标指针移动到图片上时,会显示出覆盖在图片上的文字信息,同时伴随着动画效果,增强了用户体验和...