加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flash与数学: 正弦曲线

发布时间:2020-12-15 18:24:01 所属栏目:百科 来源:网络整理
导读:???????????? 最近因为一个需求和一个做媒体互动朋友讨论这个高中的数学,术业有专攻,工作中不知不觉早已经忘记了不少。幸好朋友提点到这个数学点,我发现有不少的用处可以结合到flash里面使用,过去对这条公式不理解现在开始慢慢了解他的用途。特别对做媒

???????????? 最近因为一个需求和一个做媒体互动朋友讨论这个高中的数学,术业有专攻,工作中不知不觉早已经忘记了不少。幸好朋友提点到这个数学点,我发现有不少的用处可以结合到flash里面使用,过去对这条公式不理解现在开始慢慢了解他的用途。特别对做媒体互动和做游戏都有很不错的使用。 具体的知识点可以参考百度百科

? http://baike.baidu.com/view/982354.htm? 这个地方有着很不错的专业知识群体编辑这些。有时候挺方便了解一些遗忘的知识点。

?

? 下面做一个实验,这个程序来源于这个媒体互动的朋友:主要用到/正弦曲线公式:y=Asin(ωx+φ)+k

?

步骤一:创建一个元件

?注:Ball 是一个flash里面自创建的元件,文档类:800x400

?

?

步骤二:创建一组小球并对其进行分布

var num:int = 60;
var A:int = 50;
var startX:int = 10;
var startY:int = 150;
var balls:Array = [];
for (var i:int=0; i<num; i++)
{
	var ball:Ball=new Ball();
	addChild(ball);
	var px:int = startX + i * ball.width;
	var py:int=startY+Math.sin(px*Math.PI/180)*A;
	ball.x = px;
	ball.y = py;
	balls.push(ball);
}


?

步骤三:创建简单的交互

import flash.events.MouseEvent;

//正弦曲线可表示为y=Asin(ωx+φ)+k

var num:int = 60;
var A:int = 50;
var startX:int = 10;
var startY:int = 150;
var balls:Array = [];
for (var i:int=0; i<num; i++)
{
	var ball:Ball=new Ball();
	addChild(ball);
	var px:int = startX + i * ball.width;
	var py:int=startY+Math.sin(px*Math.PI/180)*A;
	ball.x = px;
	ball.y = py;
	balls.push(ball);
}

stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveHandler);
function onMouseMoveHandler(event:MouseEvent):void
{
	for (var j:int=0; j<balls.length; j++)
	{
		var ball:Ball = balls[j];
		var px:int = startX + j * ball.width;
		var py:int=startY+Math.sin(px*Math.PI/180+stage.mouseX*Math.PI/180)*A;
		ball.x = px;
		ball.y = py;
	}
}


这个程序点

公式:?/正弦曲线y=Asin(ωx+φ)+k 这条公式。(对小球分布和移动做了一个解析工作)。

交互:?我们移动一下鼠标,通过改变mouseX的值,让这条曲线产生左右移动的效果。

?

设置A 可以对振幅有不同高度,k 可以对曲线产生不同的上下移动的效果。

?

?

?修改一下代码,改变一下交互的使用会是怎样? 它的核心本质还没有离开到公式的使用。

?

import flash.events.MouseEvent;
import flash.geom.Point;

//正弦曲线可表示为y=Asin(ωx+φ)+k

var num:int = 60;
var A:int = 50;
var startX:int = 10;
var startY:int = 150;
var balls:Array = [];
for (var i:int=0; i<num; i++)
{
	var ball:Ball=new Ball();
	addChild(ball);
	var px:int = startX + i * ball.width;
	var py:int=startY+Math.sin(px*Math.PI/180)*A;
	ball.x = px;
	ball.y = py;
	balls.push(ball);
}
stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);
stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);

var oldPoint:Point=new Point();
var newPoint:Point=new Point();
function onMouseDownHandler(event:MouseEvent):void
{
	oldPoint.x=mouseX;
	oldPoint.y=mouseY;//= new Point(mouseX,mouseY);
	stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveHandler);
}


function onMouseUpHandler(event:MouseEvent):void
{
	stage.removeEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveHandler);
}

function onMouseMoveHandler(event:MouseEvent):void
{
	newPoint.x=mouseX;
	newPoint.y=mouseY;
    var distance:int=newPoint.x-oldPoint.x;//新点减去旧点的差值
	moveBall(distance);
}

function moveBall(distan:int):void
{

	for (var j:int=0; j<balls.length; j++)
	{
		var ball:Ball = balls[j];
		var px:int = startX + j * ball.width;
		var py:int=startY+Math.sin(px*Math.PI/180+distan*Math.PI/180)*A;
		ball.x = px;
		ball.y = py;
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读