as3 模拟“抛”的动作
时间:2022-06-14
本文章向大家介绍as3 模拟“抛”的动作,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
以一个小球为示例,在鼠标点击的时修改它的加速度值(在短时间内移动的距离),加速度以一个值加速,在遇到边界时进行反向。
代码参考自:《ActionScript 3.0 动画教程》,添加了拖动时的范围限定<在整个文档内进行拖动>。
Ball.as
1: package 2: { 3: import flash.display.Sprite; 4: 5: /** 6: * ... 7: * @author ... 8: */ 9: public class Ball extends Sprite 10: { 11: public var radius:Number; 12: private var color:uint; 13: public var vx:Number; 14: public var vy:Number; 15: 16: public function Ball(radius:Number=40, color:uint=0xff0000) 17: { 18: this.radius = radius; 19: this.color = color; 20: 21: init(); 22: } 23: 24: private function init():void { 25: graphics.clear(); 26: graphics.beginFill(color); 27: graphics.drawCircle(0, 0, radius); 28: graphics.endFill(); 29: } 30: 31: } 32: 33: }
Throwing.as
1: package 2: { 3: import flash.accessibility.Accessibility; 4: import flash.display.Sprite; 5: import flash.display.Stage; 6: import flash.display.StageAlign; 7: import flash.display.StageScaleMode; 8: import flash.events.Event; 9: import flash.events.MouseEvent; 10: import flash.geom.Rectangle; 11: 12: /** 13: * ... 14: * @author ... 15: */ 16: public class Throwing extends Sprite 17: { 18: 19: private var ball:Ball; 20: private var vx:Number; 21: private var vy:Number; 22: private var bounce:Number = -0.7; 23: private var gravity:Number = .5; 24: private var oldX:Number; 25: private var oldY:Number; 26: 27: public function Throwing() 28: { 29: init(); 30: } 31: 32: private function init():void { 33: stage.scaleMode = StageScaleMode.NO_SCALE; 34: stage.align = StageAlign.TOP_LEFT; 35: 36: ball = new Ball(); 37: ball.x = stage.stageWidth / 2; 38: ball.y = stage.stageHeight / 2; 39: vx = Math.random() * 10 - 5; 40: vy = -10; 41: 42: addChild(ball); 43: ball.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 44: addEventListener(Event.ENTER_FRAME, onEnterFrame); 45: } 46: 47: private function onMouseDown(evt:MouseEvent):void { 48: oldX = ball.x; 49: oldY = ball.y; 50: 51: stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); 52: 53: ball.startDrag(false, new Rectangle(ball.radius, ball.radius,stage.stageWidth - ball.radius*2, stage.stageHeight - ball.radius*2)); 54: 55: removeEventListener(Event.ENTER_FRAME, onEnterFrame); 56: addEventListener(Event.ENTER_FRAME, trackVelocity); 57: } 58: 59: private function onMouseUp(evt:MouseEvent):void { 60: stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); 61: ball.stopDrag(); 62: removeEventListener(Event.ENTER_FRAME, trackVelocity); 63: addEventListener(Event.ENTER_FRAME, onEnterFrame); 64: } 65: 66: private function trackVelocity(evt:Event):void { 67: vx = ball.x - oldX; 68: vy = ball.y - oldY; 69: 70: oldX = ball.x; 71: oldY = ball.y; 72: } 73: 74: private function onEnterFrame(evt:Event):void { 75: vx += gravity; 76: ball.x += vx; 77: ball.y += vy; 78: var left:Number = 0; 79: var right:Number = stage.stageWidth; 80: var top:Number = 0; 81: var bottom:Number = stage.stageHeight; 82: 83: if (ball.x + ball.radius > right) { 84: ball.x = right - ball.radius; 85: vx *= bounce; 86: } else if (ball.x - ball.radius < left) { 87: ball.x = left + ball.radius; 88: vx *= bounce; 89: } 90: 91: if (ball.y + ball.radius > bottom) { 92: ball.y = bottom - ball.radius; 93: vy *= bounce; 94: } else if (ball.y - ball.radius < top) { 95: ball.y = top + ball.radius; 96: vy *= bounce; 97: } 98: 99: } 100: 101: } 102: 103: }
- go语言结构体定义使用
- Go语言单元测试
- go语言中json转成map结构
- 让你快速认识flume及安装和使用flume1.5传输数据(日志)到hadoop2.2
- 几种服务器端IO模型的简单介绍及实现(上)
- tensorflow版的bvlc模型
- 几种服务器端IO模型的简单介绍及实现(下)
- caffe中关于数据进行预处理的方式
- 高性能IO模型浅析
- 关于梯度下降算法的的一些总结
- Hadoop集群搭建总结及Hadoop2.5集群伪分布、完全分布搭建总结
- 【提高篇】Go语言并发技术详解
- 【提高篇】GO语言标准错误处理机制error用法实例
- 【Golang语言社区】H5游戏开发-从零开始开发一款H5小游戏(四) 撞击吧粒子,炫酷技能的实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php如何比较两个浮点数是否相等详解
- keras 回调函数Callbacks 断点ModelCheckpoint教程
- Mac下快速搭建PHP开发环境步骤详解
- PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
- Ajax+PHP实现的模拟进度条功能示例
- python实例化对象的具体方法
- PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
- YII框架关联查询操作示例
- Keras之fit_generator与train_on_batch用法
- django美化后台django-suit的安装配置操作
- python读取excel进行遍历/xlrd模块操作
- 浅谈Keras的Sequential与PyTorch的Sequential的区别
- python 制作python包,封装成可用模块教程
- 使用python脚本自动生成K8S-YAML的方法示例
- Python虚拟环境库virtualenvwrapper安装及使用