第二部分:不同坐標(biāo)點(diǎn)的文字散射
目標(biāo):文字呈一種空間放射狀散射出來,并不斷循環(huán),外加透明度,縮放比例動態(tài)調(diào)整塑造立體感,空間感。
要點(diǎn):空間感和節(jié)奏感(動作執(zhí)行有間隔,逐個出現(xiàn)并依次放射) 概念理解:MC內(nèi)部時間軸的坐標(biāo)系是制作空間感最好的坐標(biāo)系,任何點(diǎn)無論在在哪個象限內(nèi),用坐標(biāo)值乘
以一個遞增的正變量,都可以達(dá)到放射的目的。 首先,得明白主時間軸和MC內(nèi)部時間軸的坐標(biāo)差別——————推出MC內(nèi)部時間軸坐標(biāo)特點(diǎn):就是一個直角坐標(biāo)系,中心為原點(diǎn),分為四個象限,這正是我們所要的坐標(biāo)系,因?yàn)槲覀円派,坐?biāo)值的偏移應(yīng)該有正有負(fù),而在舞臺的時間軸,畫面只能顯示_x>=0&&_y>=0的區(qū)域,是個不易操作的坐標(biāo)系。下面來舉個例子說明MC內(nèi)部時間軸的坐標(biāo)系是制作空間感最好的坐標(biāo)系。 以一個公式開頭(在頭腦中畫出高中數(shù)學(xué)的直角坐標(biāo)系):
mymc._x = a*c mymc._y = b*c
其中,a,b是坐標(biāo)系中隨機(jī)的一個點(diǎn),它的x坐標(biāo)為a, y坐標(biāo)為b, c是一個遞增值。 那現(xiàn)在推算下是不是無論該點(diǎn)在哪個象限內(nèi),都可以達(dá)到放射的目的呢?
在第一象限: a>0,b>0,c遞增———X坐標(biāo)不斷增加,同時Y坐標(biāo)也不斷增加———放射
在第二象限: a<0,b>0,c遞增———X坐標(biāo)不斷遞減,同時Y坐標(biāo)不斷增加———放射
在第三象限: a<0,b<0,C遞增———X坐標(biāo)不斷遞減,同時Y坐標(biāo)也不斷遞減———放射
在第四象限: a>0,b<0,c遞增———X坐標(biāo)不斷增加,同時Y坐標(biāo)不斷遞減———放射
思路: 首先,在限定范圍內(nèi)(最好小一點(diǎn),為他的散射留出更多空間,這樣會覺得字從很深的地方飄來,
以下我限定的是-10——9),為復(fù)制的MC設(shè)定一個隨機(jī)位置,這就相當(dāng)于我上面所舉例子中的a和b,他們
其實(shí)是個坐標(biāo)初值。 然后,要達(dá)到放射效果,還需要一個遞增的正變量,即c,
所以我打了個字,轉(zhuǎn)換成了MC,再次轉(zhuǎn)換,命名為mymc,并延長至第3禎,新建一AS層。 為了讓要出現(xiàn)的東西依次出現(xiàn)(既可以體現(xiàn)節(jié)奏感,又可以防止文字重疊現(xiàn)象),我選擇禎循環(huán)的編程方式。
第一禎:設(shè)一些要用到的變量初值
mymc._alpha = 0; i = 1; numOfText = 20; minOfZ = 1; maxOfZ= 120;
第二禎:主程序
function randrange(min,max){ var randomnum=Math.floor(Math.random()*(max-min+1))+min return randomnum }//自定義函數(shù),取兩數(shù)之間的隨機(jī)數(shù) duplicateMovieClip("mymc", i, i); this[i].x = randrange(-11,9); this[i].y = randrange(-10,9)//我選擇的初始坐標(biāo)范圍是-10到9 this[i].z = random(maxOfZ)+1;//1——120之間的整數(shù) this[i].dz = -2; this[i].gotoAndStop(random(this[i]._totalframes)+1); this[i].onEnterFrame = function() { this.z += this.dz;//做加速運(yùn)動 if (this.z<minOfZ) { this.x = randrange(-11,9); this.y = randrange(-10,9)//這里的this也可以改為this[i] this.z = maxOfZ;//this.z<minOfZindex時,也就是MC到達(dá)極限透明度,X,Y,比例
時,此時他已經(jīng)超出了舞臺,要不間斷播放,需要重新設(shè)定他的初值 } this.pers =600/this.z;//由于每次減2,所以this.z最小值為2,因?yàn)樵贉p2就為0了,小于1 this._x = this.x*this.pers; this._y = this.y*this.pers;//this.pers會越逐漸遞增 this._xscale = this._yscale=this.pers; this._alpha = 1000/this.z;//這里的1000你也可以改,不過別太小 };
第三禎:條件判斷
i++; if (i>=numOfText) { stop();//停在第二禎 }else{ gotoAndPlay(_currentframe-1); }
順便提一下,我們要的c就是代碼中的this.pers=600/this.z,他是個遞增函數(shù),且恒正。
很簡單吧,測試下,思考下,也許你會比我想到的更多。
效果欣賞 源碼下載
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁 同一坐標(biāo)點(diǎn)散射 下一頁 XML控制散射內(nèi)容
◎進(jìn)入論壇RIA設(shè)計與應(yīng)用版塊參加討論
|