android遊戲引擎andengine學習系列四:繪製特效的動畫文字

來源:互聯網
上載者:User

如何高效的學習,這才是我們最值得去學習的。

 

關於文字的繪製以及特效,andengine demo中給出了5種文字繪製例子,在此,我提煉出其中的三種,自己寫了一個小demo,當明白這個後,剩下的就都會明白了。

先上:

   

   

該demo中定義了三種字型,第一種就是最上面那個為預設的黑體;第二中為自訂的一種字型,字型樣式可以下載;第三種是為普通的字型描邊。

在這裡還是先了一些特效,從透明到不透明,然後再旋轉。關於這些字型和特效的控制請看如下代碼:

整體代碼結構和以前一樣,這裡我只給出關鍵性的代碼:

onLoadResources()方法:

public void onLoadResources() {this.mFontTexture = new Texture(256, 256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);this.mDroidFontTexture = new Texture(256, 256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);this.mStrokeFontTexture = new Texture(256, 256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);//定義預設字型,其中的參數:第一個為上面定義的紋理,第二個為字型樣式,第三個為字型大小,第四個為是否消鋸齒,第五個為顏色this.mFont = new Font(this.mFontTexture, Typeface.create(Typeface.DEFAULT, Typeface.BOLD), 32, true, Color.BLACK);fontList.add(this.mFont);//自訂的字型,其中的參數:第一個為上面定義的紋理,第二個為本context,第三個為字型的路徑,第四個為字型的大小,第五個為是否消鋸齒,第六個為顏色this.iFont = FontFactory.createFromAsset(this.mDroidFontTexture, this, "Droid.ttf", 32, true, Color.BLACK);fontList.add(this.iFont);//備忘1//定義字型的描邊,其中的參數:第一個參數為上面定義的紋理,第二個參數為字型樣式,第三個參數為字型的大小,第四個參數為是否消鋸齒,第五個參數為字型顏色,第六個參數為字型邊的寬度,第七個參數為秒邊的顏色this.mStrokeFont = new StrokeFont(this.mStrokeFontTexture, Typeface.create(Typeface.DEFAULT, Typeface.BOLD), 32, true, Color.BLACK, 2, Color.WHITE);fontList.add(this.mStrokeFont);//載入三種紋理this.mEngine.getTextureManager().loadTextures(this.mFontTexture,this.mDroidFontTexture,this.mStrokeFontTexture);//載入三種字型this.mEngine.getFontManager().loadFonts(this.mFont,this.iFont,this.mStrokeFont);}

onLoadScene()方法:

public Scene onLoadScene() {this.mEngine.registerUpdateHandler(new FPSLogger());final Scene scene = new Scene(1);scene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));for (int i = 0; i < fontList.size(); i++) {TickerText text = new TickerText(50, (i+1)*100, fontList.get(i),"大家好,這裡是duancanmeng的部落格!",HorizontalAlign.CENTER,5);text.addShapeModifier(new SequenceShapeModifier(new ParallelShapeModifier(new AlphaModifier(10, 0.0f, 1.0f),new ScaleModifier(10, 0.5f, 1.0f)),new RotationModifier(5, 0, 360)));//備忘2text.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);//這裡前面幾篇都講過scene.getTopLayer().addEntity(text);}return scene;}

備忘1:該處的字型樣式可以到http://download.csdn.net/detail/duancanmeng/4065568下載,裡面提供了五種不同的效果,注意:字型樣式檔案放在assets的檔案夾下。

備忘2:關於TickerText構造方法中的參數,前面的都好理解,最後兩個我解釋一下:倒數第二個是表示字型是置中對齊,倒數第一個是表示一秒鐘顯示的字元的個數,也就是繪製文字的速度。可以看到特效是從代碼text.addShapeModifier的時候載入進來的,SequenceShapeModifier是表示裡面的所有動作按照先後順序執行,ParallelShapeModifier表示裡面的所有動作同時執行,而這些所有的Modifier中的參數,第一個是代表執行的時間,第二個是執行前的狀態,第三個是執行後的狀態。例如:new
AlphaModifier(10,0.0f,1.0f)代表10秒鐘之內文字從透明的變成不透明的。

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.