2009-07-20 6 views
1

iPhoneでOpenGL ESを掘り下げていますが、OpenGL ESとFlashについての大きなアイデアはまだありません。OpenGL ES VSでFlashを作っているときのクールなものの主な違いは何ですか?

について私はそれが本当に素晴らしいアニメーションとトランジションを作ることができることを知っています。最高の例として、iPhone用のOcarinaフルートを見てみましょう。このアプリケーションは、シンプルで強力なアニメーションを作成します。小さな円を広げて大きくなります。彼らは、放射状のグラジエントを持ち、アルファを変更します。

それは私が意味するクールなフラッシュアニメーションのものです。

FlashとOpenGL ESの両方で、円のような何らかの「オブジェクト」を接続することができます。円に触れると別のアニメーションが始まるようになります。

表面を見ると、私の理解では両方のことがほぼ同じです。多分、誰かが内部からの違いを指摘することができます。すなわち、フラッシュデベロッパーはを完全にの新しい考え方と習得方法を学ばなければならないのでしょうか、あるいは両方の技術に多くのことが共通していますか?

+0

フロリダ

back2dos :)

greetz ...少なくとも面白かったこと灰はまだiPhoneにはない。 – Nosredna

+0

私は知っている;)それは私の意図ではなかった... iPhoneでフラッシュをコードしたくない。両方の技術の違いには一般的に関心があります。同じ技術を使うことが可能なように思われるからです。 – Thanks

答えて

1

OpenGLには、「オブジェクト」と「グラデーション」という概念はありません。 OpenGLは、頂点、法線、色、行列などを知っています...これらのものを組み合わせて、多くのプログラミングを行うと素晴らしいことができますが、Flashを使うほど簡単ではありません。まだ、iPhone用の(良い)Flash Playerはないことに注意してください。

1

OpenGLは、Flashで開発するときに通常使用するAPIよりも低いレベルのAPIです。あなたはそれを使ってたくさんのことをすることができますが、より高いレベルの抽象を自分で構築するか、既存のライブラリを使用する必要があります。

あなたがFlashの世界から来ている場合は、Layersなどの2D抽象化が必要だと私は思っています.Cocos 2D for iPhoneは、既に組み込まれているクールなものがたくさんある素晴らしいライブラリです。here

+0

私は、レイヤーやアニメーションのあるCore AnimationはiPhoneのFlashのようなものに近いと主張します。また、サードパーティ製のフレームワークに欠けている、このデバイス用にAppleから手を差し伸べるという利点もあります。 –

+0

Brad、yes Core Animationが可能です。 しかし、私たちはFlashからiPhoneに独自の2Dアニメーションライブラリを移植しています。 Core Animationを使って最初に評価しましたが、私たちのニーズに適したものではありませんでした。 Core Animationよりもきめ細かいAPIが必要でしたが、Core Animationで多くのカスタムアニメーションを処理するのは面倒でした。今やUIウィジェットのカスタムアニメーションを作成しても問題ありませんが、私はその上でゲームをしません。 iPhoneで開発された最もよく見える2Dゲームは、Core AnimationではなくOpenGLを使用していると思います。 –

2

まず、iPhone用のフラッシュプレーヤーはありません...そうです、それは本当にオプションではありません...しかし、代替のようなフラッシュがあります... this postを見てください... haXe ...

短く:haXeはオープンソースの言語であり、Flash Playerをターゲットに設定することができます。6-10、PHP、JavaScript、n eko VM、C++(より多くのターゲットが登場)... haXe/cppコンパイラバックエンドの作成者は、iPhoneを利用するためにそれを使用しています...実際には、彼はflash9 C++のAPIまたはopenGLを使ったneko(neash? nme?あなたが覚えていない...:D)...

これは、フラッシュ9 APIを使用して、iPhoneのhaXeを書くことができます... haXeはactionscriptと少し異なりますが、すぐに

現在のところ、彼のライブラリはソフトウェアレンダリングまたはOpenGLをグラフィックス用に使用しているため、iPhone上でソフトウェアレンダリングを使用する必要があります(これは実際の選択肢ではありません)。 ..しかし、進むべき道になるので、多分

...

...それは、研究開発をするために十分な公正だと私はうまくいけば、彼はすぐにオープンGL ESの統合を持つことでしょう、と思います

しかし、あなたのアクティブなタグが示すように、あなたは本当にあなたのものを完了するのに十分なCocoaフレームワークを使用するのが簡単ではない場合、私は確信していないので、あなたは本当にactionscriptやフラッシュを扱っていない...haXeとFlash APIの使用には利点があります。関連するCocoaフレームワーク(私の友人、Macデベロッパーであり、iPhoneで始まったので、表面的な洞察力がありますが、少しショックを受けて、2日間の作業後には少ししか稼働していなかったのですが)...フラッシュAPIはより高水準なので、シンプルで限られているだけでなく、パフォーマーとしてはならないかもしれませんが、 。それは電力使用量を意味するので...

が、これは完全なhaXeのプログラムはかなりの円のものをやっているが、iPhone上でもパフォーマンスの問題、オカリナのことを行います

package ; 

import flash.display.DisplayObject; 
import flash.display.GradientType; 
import flash.display.LineScaleMode; 
import flash.display.Shape; 
import flash.display.StageAlign; 
import flash.display.StageScaleMode; 
import flash.events.Event; 
import flash.filters.BlurFilter; 
import flash.geom.Matrix; 
import flash.Lib; 
class Main {  
    static function main() { 
     for (i in 0...(Std.random(5) + 5)) { 
      var s = genCircle(); 
      Lib.current.addChild(s); 
      pulsate(s, Std.random(10) + 10);    
     } 
    } 
    static function genCircle():Shape { 
     var radius = Std.random(50) + 50; 
     var s = new Shape(); 
     var color = 0x110000 * Std.random(8) + 0x001100 * Std.random(8) + 0x000011 * Std.random(8) + 0x7F7F7F; 
     s.graphics.lineStyle(5, color,1,false, LineScaleMode.NONE); 
     if (Std.random(2) == 1) 
      s.filters = [new BlurFilter(4, 4, 3)]; 
     else { 
      var m = new Matrix(); 
      m.createGradientBox(radius, radius, 0, -radius/2, -radius/2); 
      s.graphics.beginGradientFill(GradientType.RADIAL, [color, color], [1,0.5], [0, 0xFF], m); 
     } 
     s.graphics.drawCircle(0, 0, radius); 
     s.x = 50 + Std.random(300); 
     s.y = 50 + Std.random(300); 
     return s; 
    } 
    static function pulsate(d:DisplayObject, speedModifier:Float):Void { 
     var cter = Std.int(Std.random(Std.int(speedModifier))); 
     d.addEventListener(Event.ENTER_FRAME, function (e:Event):Void { 
      var x = Math.sin(cter++/speedModifier)/2 + 0.5; 
      d.scaleX = d.scaleY = x + 0.5; 
      d.alpha = 1.2 - x; 
     }); 
    } 
} 

をまだ、私はさらにビットこれは、未来...何が残っているのかは、オープンGL ESは、上記のように、はるかに扱いにくく、iPhoneが生成するすべての入力(アクセラレーション、マルチタッチ)にhaXeバインディングを取得します...

これは、道路はあなたに面白そうだ...でも、iPhoneで働く誰かとして、あなたはhaXe-> C++ - > iPhoneソリューションに貢献したいと思うかもしれない...;)

私はそれを助けました。 。またはそれは

+0

クールなもの。ありがとう!まあ、私の意図はフラッシュでは何もしないことでした。私はちょうど技術の違いを知りたい):)しかし、とにかくhaXeヒントのおかげで:) – Thanks

関連する問題