a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 辦公 > Flash > 正文

Flash AS3.0 實(shí)例教程 噴泉?jiǎng)赢嬏匦?/h1>
2020-07-17 13:16:24
字體:
供稿:網(wǎng)友
在這個(gè)實(shí)例教程中,我們將介紹利用速度向量和重置對(duì)象的技巧來實(shí)現(xiàn)噴泉效果。所謂向量就是有方向的量。比如一輛車從東向西以80公里每小時(shí)的速度行駛,那么我們就可以得到汽車的速度向量,它包括兩個(gè)元素:速度,每小時(shí)80公里,方向,由東向西。
  下面我們來分析一下噴泉是怎樣形成的。
  噴泉是若干個(gè)水珠向上噴射,然后又受重力影響掉回地面。這個(gè)過程的速度向量有哪些,具體又是怎么的呢?很容易發(fā)現(xiàn)至少的兩個(gè)力,一個(gè)是使水珠向上噴射的外力,一個(gè)是使水珠掉回地面的重力。
  外力的速度向量:速度我設(shè)為10-20間的隨機(jī)數(shù),方向是向上的那就一定是y軸上的負(fù)數(shù)了。將這個(gè)速度向量加到水珠上就使水珠向上噴射了。
  具體做法是:在ENTER_FRAME事件中這水珠的y 值加上-10到-20間的一個(gè)隨機(jī)數(shù)。
  重力的速度向量:速度就比較小了我設(shè)為0.5,方向則是y軸上的正值。同樣加到ENTER_FRAME事件中,這樣水珠在噴射后就會(huì)掉回地上。
  還有個(gè)問題,因?yàn)樗俣认蛄渴羌釉贓NTER_FRAME事件中的,水珠就可能一直按這些速度向量運(yùn)動(dòng),面遠(yuǎn)離舞臺(tái),那噴泉就不知會(huì)噴到什么地方去了。
  要解決這個(gè)問題,就要將超出舞臺(tái)邊界的水珠重新定位到噴射口,這樣就形成了不間斷的噴射了。
  好了,上面分析了效果產(chǎn)生方法,下面就來制作。
  第一步是要畫一個(gè)水珠,新建一個(gè)影片剪輯元件,用放射填充畫一個(gè)橢圓,左色標(biāo)為白色,透明度100%,右色標(biāo)略帶點(diǎn)灰色,透明度50%。在屬性面板中設(shè)置橢圓在寬為2像素,高為5像素。在庫(kù)中右擊該元件,打開連接窗口,(cs4打開屬性窗口),設(shè)置一個(gè)類名,我設(shè)的是 pall。
  接下來回到主場(chǎng)景,打開幀動(dòng)作面板,我們來寫代碼。
  噴泉是由若干水珠形成的,多少呢?我整了500個(gè):
  var count:int = 500;
  重力速度向量:
  var zl:Number = 0.5;
  將這500個(gè)水珠放到一個(gè)數(shù)組中:
  var balls:Array;
  balls = new Array();
  用一個(gè)for循環(huán)來將500個(gè)水珠放到數(shù)組中:
  for (var i:int = 0; i < count; i++) {
  var ball:pall = new pall();
  將水珠定位到水珠的噴射口:
  ball.x = 260;
  ball.y = 200;
  在x軸方向也設(shè)一個(gè)速度向量,使水珠在x軸的一定范圍內(nèi),并將這個(gè)速度向量存到每個(gè)水珠的自定義屬性vx中:
  ball["vx"]= Math.random() * 2 - 1;
  下面是y軸方向的速度向量,將它存在自定義屬性vy中:
  ball["vy"] = Math.random() * -10 - 10;
  將水珠放到舞臺(tái)上,并存到數(shù)組中:
  addChild(ball);
  balls.push(ball);
  接下來偵聽ENTER_FRAME事件,實(shí)現(xiàn)噴泉效果:
  addEventListener(Event.ENTER_FRAME, onEnterFrame);
  onEnterFrame函數(shù)內(nèi)容:
  通過一個(gè)for循環(huán)為數(shù)組中的水珠加上各個(gè)速度向量:
  for (var i:Number = 0; i < balls.length; i++) {
  var ball:pall = pall(balls);
  首選在噴射速度向量上加上重力速度向量,這樣每一幀的時(shí)間就會(huì)加一次重力,而噴射力卻沒變,這樣重力就會(huì)逐漸超過噴射力面使水珠下落:
  ball["vy"] += zl;
  將x,y軸速度向量加到水珠上:
  ball.x +=ball["vx"];
  ball.y +=ball["vy"];
  接下來的是看水珠是否超出了舞臺(tái),如果超出了舞臺(tái),則將水珠重新定位到噴射口,并將速度向量設(shè)為初始狀態(tài)。
  if (ball.x - ball.width/2> stage.stageWidth ||
  ball.x + ball.width/2 < 0 ||
  ball.y - ball.width/2 > stage.stageHeight ||
  ball.y + ball.width/2 < 0) {
  ball.x = 260;
  ball.y = 200;
  ball["vx"]= Math.random() * 2 - 1;
  ball["vy"] = Math.random() * -10 - 10;
  完整代碼: var count:int = 500; var zl:Number = 0.5;
var balls:Array;
balls = new Array();
for (var i:int = 0; i < count; i++) {
var ball:pall = new pall();
ball.x = 260;
ball.y = 200;
ball["vx"]= Math.random() * 2 - 1;
ball["vy"] = Math.random() * -10 - 10;
addChild(ball);
balls.push(ball);
}
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void {
for (var i:Number = 0; i < balls.length; i++) {
var ball:pall = pall(balls[i]);
ball["vy"] += zl;
ball.x +=ball["vx"];
ball.y +=ball["vy"];
if (ball.x - ball.width/2> stage.stageWidth ||
ball.x + ball.width/2 < 0 ||
ball.y - ball.width/2 > stage.stageHeight ||
ball.y + ball.width/2 < 0) {
ball.x = 260;
ball.y = 200;
ball["vx"]= Math.random() * 2 - 1;
ball["vy"] = Math.random() * -10 - 10;
}
}
}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

主站蜘蛛池模板: 欧美日韩中文在线 | 女同久久另类99精品国产 | 久久91精品国产 | 波多野结衣av中文字幕 | 国产不卡视频一区二区三区 | 久久电影中文字幕 | 久久99精品视频 | 亚洲国产精品人人爽夜夜爽 | 欧美日韩一区二区在线观看 | 中文字幕日韩欧美一区二区三区 | 日韩最新网址 | 人人干人人干人人干 | 免费在线黄色av | 亚洲日韩欧美一区二区在线 | 日韩欧美理论片 | 欧美成人免费观看 | 免费日韩成人 | 先锋资源中文字幕 | 国产精品久久久久久久久免费软件 | 视频精品一区 | 国产精品一区二区免费在线观看 | 欧美人体一区二区三区 | 国产成人精品免费 | 成人深夜福利在线观看 | 久久久久久久久久久免费 | 亚洲免费在线观看 | 国产精品原创巨作av色鲁 | 黄色在线免费网站 | 国产小视频在线观看 | 欧美午夜精品理论片a级按摩 | 精品国产乱码久久久久久免费 | 国产一区二区不卡 | 亚洲精品电影在线观看 | 在线观看国产一级片 | 亚洲三级在线看 | 欧美狠狠操| 青青草激情视频 | 国产无套精品久久久久久 | 天久久| 国内精品久久久久久久97牛牛 | 午夜免费电影 |