萬盛學電腦網

 萬盛學電腦網 >> 圖文處理 >> Flash教程 >> Flash制作旋轉的花朵

Flash制作旋轉的花朵

 

  思路:

  1.使用for...in語句遍歷整個主場景(_root)中所有的對象;

  2.找到他們(如_root[k]),並為他們的不同方法指定不同函數;

  步驟1: 在主場景放入若干個影片剪輯,不需要為他們起實例名。 步驟2:加入AS代碼:

  var F1:Function = function () {

  this.startDrag(false);

  };

  var F2:Function = function () {

  this.stopDrag();

  };

  var F3:Function = function () {

  this._rotation = this.speed;

  };

  //定義三個函數:

  // F1完成對象開始拖拽功能;

  // F2完成對象停止拖拽功能;

  // F3完成對象自轉功能,速度為每個對象各自的speed*/

  for (var k in _root) {

  _root[k].speed = random(20);

  _root[k].onPress = F1;

  _root[k].onRelease = F2;

  _root[k].onEnterFrame = F3;

  }

  //遍歷主場景,為每個MC設置speed屬性及onPress,onRelease.onEnterFrame方法。

  Flash充電1:兩種定義函數的方法

  (1)函數語句定義法:如

  function Testadd(a, b) {

  return a b;

  }

  (2)函數表達式定義法:如

  var Testadd:Function = function (a, b) {

  return a b;

  };

  平時,應當盡量使用函數語句定義[方法1],這種定義方法更加標准,也更簡捷。區別:方法2,需要先定義、後調用;方法1,可以先調用,後寫定義。

  Flash充電2:for...in 用來枚舉一個集合中所有的元素,多用於遍歷(檢索)如:XML,數組,Object甚至_root或MC等等,功能非常強大。本課中,我們用它來遍歷整個_root。

  例1:

  var Car = {brand:"M6", color:"red", engine:2000};

  for (var k in Car) {

  trace(k "=" Car[k]);

  }

  // 輸出結果:

  // brand=M6

  // color=red

  // engine=2000

  例2:

  //首先,在主場景中放入四個影片剪輯

  for (var k in _root) {

  trace(_root[k]);

  }

  //輸出結果:

  //_level0.instance4

  //_level0.instance3

  //_level0.instance2

  //_level0.instance1

  我們注意到,即使不給_root中的MC命名,FLASH編譯器也自動為MC命名的,前面的_level10指該元件的深度為10.

  Flash充電3: .onEnterFrame

  (1) onEnterFrame是AS動畫和游戲制作的靈魂。

  (2) 當我們在主場景第一幀寫入onEnterFrame=function(){...}時,實際上Flash編譯器會自動在前面加上_root變為_root.onEnterFrame。

  (3)重要:MovieClip.onEnterFrame=function(){...}形式。這種形式可以讓MC獨立地運行onEnterFrame。例:

  //首先主場景上有三個影片剪輯,實例名分別為MC1,MC2,MC3。//

  MC1.speed = random(10);

  MC2.speed = random(10);

  MC3.speed = random(10);

  MC1.onEnterFrame = function() {

  MC1._rotation = MC1.speed;

  };

  MC2.onEnterFrame = function() {

  MC2._rotation = MC2.speed;

  };

  MC3.onEnterFrame = function() {

  MC3._rotation = MC3.speed;

  };

  試想一下如果場景有100個這樣MC那麼寫代碼的過程是不是太痛苦了啊...呵呵...我們看看下面一種寫法:

  function F1() {

  this._rotation = this.speed;

  }

  for (var k in _root) {

  _root[k].speed = random(10);

  _root[k].onEnterFrame = F1;

  }

  完成的功能相當於:

  MC1.speed = random(10);

  MC1.onEnterFrame = function() {

  this._rotation = this.speed;

  };

  函數中this指:調用該函數的對象(MC1)

copyright © 萬盛學電腦網 all rights reserved