as3练习―小球做圆周运动

package
{
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.MouseEvent;
 import flash.text.TextField;
 [SWF(width = "600",height = "600",backgroundColor = "#ffffff",frameRate = "30")]

 public class TestAs extends Sprite
 {
  private var round:Sprite = new Sprite;
  private var start:TextField = new TextField;
  private var cancle:TextField = new TextField;
  private var pause:TextField = new TextField;
  private var t:Number = 0;
  private var r:int = 100;
  public function TestAs()
  {
   round.graphics.beginFill(0xFF00000);
   round.graphics.drawCircle(150,300,20);
   addChild(round);
   start.text = "start";
   start.x = 490;
   start.y = 570;
   start.addEventListener(MouseEvent.CLICK,startFun);
   addChild(start);
   cancle.text = "cancle";
   cancle.x = 530;
   cancle.y = 570;
   cancle.addEventListener(MouseEvent.CLICK,cancleFun);
   addChild(cancle);
   pause.text = "pause";
   pause.x = 570;
   pause.y = 570;
   pause.addEventListener(MouseEvent.CLICK,pauseFun);
   addChild(pause);
  }
  private function startFun(event:MouseEvent):void
  {
   round.addEventListener(Event.ENTER_FRAME,move);
  }
  private function cancleFun(event:MouseEvent):void
  {
   round.removeEventListener(Event.ENTER_FRAME,move);
   t = 0;
   round.x = 0;
   round.y = 0;
  }
  private function pauseFun(event:MouseEvent):void
  {
   round.removeEventListener(Event.ENTER_FRAME,move);
  }
  private function move(event:Event):void
  {
   round.x = (r - r * Math.cos(t++ * Math.PI / 180));
   round.y = (r * Math.sin(t++ * Math.PI / 180));
  }
 }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是OpenGL实现实心小沿着圆周均速运动的代码示例: ```c++ #include <GL/glut.h> #include <math.h> // 小的半径 #define RADIUS 0.2f // 圆心坐标 #define CENTER_X 0.0f #define CENTER_Y 0.0f // 圆的半径 #define CIRCLE_RADIUS 2.0f // 周期 #define PERIOD 5.0f // 小的位置 GLfloat ball_x = 0.0f; GLfloat ball_y = 0.0f; // 计算小的位置 void update(int value) { // 计算当前时间 GLfloat time = glutGet(GLUT_ELAPSED_TIME) / 1000.0f; // 计算小在圆周上的角度 GLfloat angle = 2.0f * M_PI * time / PERIOD; // 计算小的位置 ball_x = CENTER_X + CIRCLE_RADIUS * cos(angle); ball_y = CENTER_Y + CIRCLE_RADIUS * sin(angle); // 更新窗口 glutPostRedisplay(); // 设置下一次更新的时间 glutTimerFunc(16, update, 0); } // 初始化函数 void init() { // 设置背景颜色为白色 glClearColor(1.0f, 1.0f, 1.0f, 1.0f); } // 绘制函数 void draw() { // 清空屏幕 glClear(GL_COLOR_BUFFER_BIT); // 绘制圆 glBegin(GL_LINE_LOOP); for (int i = 0; i < 360; i++) { GLfloat angle = 2.0f * M_PI * i / 360.0f; GLfloat x = CENTER_X + CIRCLE_RADIUS * cos(angle); GLfloat y = CENTER_Y + CIRCLE_RADIUS * sin(angle); glVertex2f(x, y); } glEnd(); // 绘制小 glPushMatrix(); glTranslatef(ball_x, ball_y, 0.0f); glBegin(GL_TRIANGLE_FAN); glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(0.0f, 0.0f); for (int i = 0; i <= 360; i++) { GLfloat angle = 2.0f * M_PI * i / 360.0f; GLfloat x = RADIUS * cos(angle); GLfloat y = RADIUS * sin(angle); glVertex2f(x, y); } glEnd(); glPopMatrix(); // 刷新缓冲区 glutSwapBuffers(); } // 主函数 int main(int argc, char** argv) { // 初始化GLUT glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(500, 500); glutCreateWindow("Circle Motion"); // 设置绘制函数和更新函数 glutDisplayFunc(draw); glutTimerFunc(0, update, 0); // 初始化OpenGL init(); // 进入主循环 glutMainLoop(); return 0; } ``` 运行该程序可以看到一个实心小沿着圆周均速运动的动画效果。可以通过修改`CIRCLE_RADIUS`和`PERIOD`来改变圆形的半径和小的运动周期。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值