2009-07-20 4 views
1

Ich grabe in OpenGL ES auf dem iPhone, und ich habe immer noch keine große Idee über OpenGL ES und Flash.Was sind die Hauptunterschiede zwischen coolen Sachen mit OpenGL ES VS machen es mit Flash?

Über Flash Ich weiß nur, dass es wirklich schöne Animationen und Übergänge machen kann. Schauen Sie sich zum Beispiel die Ocarina Flöte für das iPhone an. Diese Anwendung macht einige einfache, aber leistungsstarke Animationen. Es erweitert kleine Kreise, um größer und größer zu werden. Und während sie dies tun, haben sie radiale Gradienten und ändern Alpha.

Das ist die Art von coolen Flash-Animationen, die ich meine.

Jetzt gibt es sowohl in Flash als auch in OpenGL ES die Möglichkeit, irgendeine Art von "Objekten" wie Kreisen oder was auch immer mit irgendeiner Art von Code zu verbinden, so dass das Berühren eines Kreises eine andere Animation auslöst.

Für mein Verständnis sind beide Dinge ziemlich genau die gleichen, wenn Sie auf der Oberfläche suchen. Vielleicht kann jemand auf die Unterschiede von innen hinweisen. d. h. muss ein Flash-Entwickler eine neue Art zu denken und zu arbeiten lernen oder haben beide Technologien viele Gemeinsamkeiten?

+0

Fl Asche ist noch nicht auf dem iPhone. – Nosredna

+0

Ich weiß;) das war nicht meine Absicht ... will nicht Flash auf iPhone codieren. Es ist ein generelles Interesse an den Unterschieden zwischen beiden Technologien, da es scheint, dass es möglich ist, dasselbe mit ihnen zu tun. – Thanks

Antwort

1

In OpenGL gibt es keine Vorstellung von "Objekten" und "Gradienten" und all die schönen Dinge, die Flash bietet. OpenGL weiß nur über Vertices, Normalen, Farben, Matrizen, etc ... Diese Dinge kombiniert mit viel Programmierung können erstaunliche Dinge machen, aber es wird nicht so einfach sein wie die Verwendung von Flash. Denken Sie daran, es gibt noch keinen (guten) Flash Player für das iPhone.

1

OpenGL ist eine untergeordnete API, die Sie normalerweise bei der Entwicklung mit Flash verwenden. Sie können eine Menge Dinge damit tun, aber entweder müssen Sie Ihre Abstraktionen auf höherer Ebene selbst erstellen oder eine vorhandene Bibliothek verwenden.

Wenn Sie von Flash-Welt kommen, nehme ich an, dass Sie meist 2D-Abstraktionen wie Layer usw. benötigen. Cocos 2D für iPhone ist eine großartige Bibliothek dafür mit vielen coolen Sachen bereits eingebaut. Sie können es von here bekommen

+0

Ich würde behaupten, dass Core Animation mit seinen Layern und Animationen näher an Flash auf dem iPhone ist. Es hat auch den Vorteil, von Apple für das Gerät, das ein Fremdanbieter-Framework fehlt, von Hand gestimmt zu werden. –

+0

Brad, ja Core Animation ist eine Möglichkeit. Wir haben jedoch unsere eigene 2D-Animationsbibliothek von Flash auf iPhone portiert. Wir haben zuerst mit Core Animation bewertet, aber wir fanden es nicht passend für unsere Bedürfnisse. Zugegeben, wir brauchten eine detailliertere API als Core Animation, aber wir fanden auch heraus, dass die Handhabung vieler benutzerdefinierter Animationen in Core Animationen sehr umständlich war. Es ist in Ordnung, ab und zu eine benutzerdefinierte Animation für ein UI-Widget zu erstellen, aber ich würde das Spiel nicht darauf anwenden. Ich denke, die meisten gut aussehenden 2D-Spiele, die auf dem iPhone entwickelt wurden, verwenden OpenGL, nicht Core Animation. –

2

vor allem gibt es keinen Flash Player für das iPhone ... also ja, das ist nicht wirklich eine Option ... aber es gibt eine Blitz wie Alternative ... sehen Sie this post ... und bei haXe ...

in Kürze: haXe ist eine Open-Source-Sprache, die Flash Player 6-10, PHP, JavaScript, n ermöglicht Eko VM, und C++ (mehr Ziele kommen) ... der Ersteller des HaXe/cpp Compiler-Backends benutzt es, um auf das iPhone zu gelangen ... in der Tat hat er eine Bibliothek geschrieben, die dir erlaubt, flash9 zu benutzen API auf C++ oder neko mit openGL (neash? nme? kann mich nicht erinnern welches ist welches ...: D) ...

das erlaubt dir haXe für das iPhone zu schreiben, mit Flash 9 api ... haXe ist ein wenig anders als actionscript, aber du wirst es schnell bekommen der hang of it ...

derzeit ist eine Einschränkung, dass seine Bibliothek entweder Software-Rendering oder Open GL für Grafiken verwendet, weshalb er Software-Rendering auf dem iPhone verwenden muss (das ist nicht wirklich eine Option). .. aber es ist fair genug für developping und ich denke, hoffentlich wird er die Open GL eS Integration in Kürze ...

so vielleicht werden, dass sie eine Art und Weise ...

zu gehen würde

aber wie Ihre aktiven Tags zeigen, haben Sie sich nie wirklich mit ActionScript oder Flash beschäftigt, also bin ich mir nicht sicher, ob es nicht einfacher ist, die entsprechenden Cocoa-Frameworks zu verwenden, um Ihre Sachen zu erledigen ...Es gibt einen Vorteil in der Verwendung von haXe und Flash API: Ich denke, es ist viel einfacher als verwandte Cocoa Frameworks (ein Freund von mir, der ein Mac-Entwickler ist, begann mit dem iPhone, so habe ich einen oberflächlichen Einblick, aber es war ein wenig schockierend, wie wenig er nach 2 Arbeitstagen in Betrieb hatte) ... die flash-API auf hohem Niveau, also einfacher, aber auch begrenzt und vielleicht nicht so performant ... aber man wird sehr schnell Ergebnisse bekommen .. ., aber perfomance Angelegenheiten auf dem iPhone, weil es den Stromverbrauch bedeutet ...

dies ein volles haXe Programm funktioniert die Okarina ziemlich die Kreis Sachen tun:

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; 
     }); 
    } 
} 

noch, das ich weiter biss in die Zukunft ... was noch zu tun ist, ist Open zu benutzen GL ES, wie erwähnt, und, viel komplizierter, erhalten Sie Bindung an alle Eingänge, die ein iPhone produziert (Beschleunigung, Multi-Touch) ...

Nun, Sie sollten es im Auge behalten, wenn dies Straße scheint dir interessant ... oder sogar, als jemand, der mit dem iPhone arbeitet, möchtest du vielleicht sogar zur haXe-> C++ -> iPhone-Lösung beitragen ...;)

hoffe das hat geholfen .. . oder dass es war interessant, zumindest ... :)

greetz

back2dos

+0

coole Sachen. Vielen Dank! Nun, meine Absicht war, nichts in Flash zu machen. Ich möchte nur die Unterschiede in den Technologien wissen :) aber trotzdem vielen Dank für den haXe Hinweis :) – Thanks

Verwandte Themen