开启左侧

物理中力的图示组件(as2.0)

[复制链接]
铁血 发表于 2007-11-28 23:11:09 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
ForceSchemaClass内容:
//铁血制作
class ForceSchemaClass extends MovieClip{//ForceSchemaClass类继承MC
[Inspectable]//元数据标记(可以出现在参数列表中)
public var f:Array;
[Inspectable]
public var theta:Array;
[Inspectable]
public var fname:Array;
public function ForceSchemaClass(){
        drawLine(f,theta,fname); //调用drawLine函数画图,f,theta,fname分别
                            //为力的大小、力的角度(与水平向右方向的夹角)、力的名称
}
private  function drawLine(f:Array,theta:Array,fname:Array):Void{//drawLine方法
var t = 0;
this.lineStyle(2, 0xFF0000, 100);
var cos = Math.cos;
var sin = Math.sin;
var PI = Math.PI;
var f =f;
var theta =theta;
this.onEnterFrame = function() {
  if (t<f.length) {
   this.moveTo(0, 0);
   this.lineTo(f[t]*cos(theta[t]*PI/180), -f[t]*sin(theta[t]*PI/180));//力的大小
   this.lineTo((f[t]-10)*cos(theta[t]*PI/180)+5*sin(theta[t]*PI/180), -(f[t]-10)*sin(theta[t]*PI/180)+5*cos(theta[t]*PI/180));//箭头的一撇
   this.moveTo(f[t]*cos(theta[t]*PI/180), -f[t]*sin(theta[t]*PI/180));
   this.lineTo((f[t]-10)*cos(theta[t]*PI/180)-5*sin(theta[t]*PI/180), -(f[t]-10)*sin(theta[t]*PI/180)-5*cos(theta[t]*PI/180));//箭头另一撇
   this.createTextField("pos"+t, t, 0, 0, 40, 50);//力的标签
   this["pos"+t]._x = f[t]*cos(theta[t]*PI/180)+5;
   this["pos"+t]._y = -f[t]*sin(theta[t]*PI/180)-5;
   this["pos"+t].text = this.fname[t].toString();
  } else {
   delete this.onEnterFrame;
  }
  t++;
};
};
}
源文件:
force.rar (4.77 KB, 下载次数: 7)
参与人数 1威望 +4 收起 理由
etthink + 4 原创内容

查看全部评分总评分 : 威望 +4

精彩评论3

正序浏览
铁血 发表于 2008-5-22 22:02:28 | 显示全部楼层
改成了AS3版:
效果
未命名.JPG
代码:
  1. package {
  2.         import flash.display.Sprite;
  3.         import flash.text.TextField;
  4.         public class ForceSchema extends Sprite {
  5.                 private var _force:Number;
  6.                 private var _theta:Number;
  7.                 private var _fname:String;
  8.                 private var _radians:Number;
  9.                 private var _fx:Number;
  10.                 private var _fy:Number;
  11.                 private var _ftext:TextField;
  12.                 public function ForceSchema(fx:Number,fy:Number,force:Number,theta:Number,fname:String) {
  13.                         this._force=force;
  14.                         this._theta=theta;
  15.                         this._fname=fname;
  16.                         _fx=fx;
  17.                         _fy=fy;
  18.                         _radians=_theta * Math.PI / 180;
  19.                         init();
  20.                 }
  21.                 private function init():void {
  22.                         drawline();
  23.                 }
  24.                 private function drawline():void {
  25.                         this.graphics.lineStyle(2,0xFF0000,100);
  26.                         this.graphics.moveTo(_fx,_fy);
  27.                         this.graphics.lineTo(_fx+_force*Math.cos(_radians), _fy-_force*Math.sin(_radians));//力的大小
  28.                         this.graphics.lineTo(_fx+(_force - 10) * Math.cos(_radians) + 5 * Math.sin(_radians),_fy-(_force - 10)* Math.sin(_radians) + 5 * Math.cos(_radians));//箭头的一撇
  29.                         this.graphics.moveTo(_fx+_force*Math.cos(_radians), _fy-_force*Math.sin(_radians));
  30.                         this.graphics.lineTo(_fx+(_force - 10) * Math.cos(_radians) - 5 * Math.sin(_radians),_fy-(_force - 10)* Math.sin(_radians) - 5 * Math.cos(_radians));//箭头另一撇
  31.                         _ftext=new TextField;
  32.                         addChild(_ftext);
  33.                         this._ftext.x = _fx+_force*Math.cos(_radians)+5;
  34.                         this._ftext.y = _fy-_force*Math.sin(_radians)-5;
  35.                         _ftext.autoSize="left";
  36.                         _ftext.text=_fname;
  37.                 }
  38.         }
  39. }
复制代码
源文件:
ForceSchema.rar (5.77 KB, 下载次数: 2)

[ 本帖最后由 铁血 于 2008-5-22 22:03 编辑 ]
 楼主| 铁血 发表于 2008-5-22 22:05:17 | 显示全部楼层
ForceSchema(x,y,力的大小,力的方向,力的符号)
欢迎大家多发帖,参与讨论,增进彼此了解。
 楼主| king_mountain 发表于 2009-1-26 11:27:08 | 显示全部楼层
好啊!!!!
欢迎大家多发帖,参与讨论,增进彼此了解。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

推荐阅读更多+
会员达人更多+
广告位

最新信息

更多+

关注我们:教育技术人

官方微信

官方微博

教育技术热线:

13955453231

学教育技术,上教育技术论坛!

教育技术论坛征稿范围:教育技术应用案例、教程文章、优秀作品等。

Email:sf@etthink.com

Copyright   ©2007-2026  应用思考-教育技术论坛  Powered by©Discuz!  技术支持:且行资源    ( 皖ICP备10014945号-4 )