Frage

Lassen Sie uns sagen, dass ich eine Webseite wollen, die ein Flash-Applet enthält, und ich möchte ziehen und einige Objekte aus oder an den Rest der Web-Seite fallen, ist dies überhaupt möglich?

Bonus, wenn Sie wissen, eine Website irgendwo, dass das tut!

War es hilfreich?

Lösung

Dies hat mich fasziniert. Ich weiß jessegavin einige Code geschrieben, während ich ging um dies herauszufinden, aber dieser wird getestet. Ich habe ein super-einfaches Arbeitsbeispiel, das Sie ziehen nach und von Blitz läßt. Es ist ziemlich chaotisch, wie ich es zusammen während meiner Mittagspause warf.

Hier ist die Demo

Und die Quelle

Die Basisklasse wird direkt aus dem Externer Schnittstelle LiveDocs genommen . Ich habe MyButton so die Schaltfläche einen Text haben könnte. Die Mehrheit der Javascript kommt aus dem gleichen LiveDocs Beispiel.

ich dies mit mxmlc zusammengestellt.

Andere Tipps

HAFTUNGSAUSSCHLUSS ich diesen Code überhaupt nicht getestet, aber die Idee sollte funktionieren. Auch dies nur Griffe der Ziehen ein Flash-Film.

Hier ist ein Actionscript 3.0-Code die Verwendung der ExternalInterface Klasse.

import flash.display.Sprite;
import flash.external.ExternalInterface;
import flash.net.URLLoader;
import flash.net.URLRequest;

if (ExternalInterface.available) {
  ExternalInterface.addCallback("handleDroppedImage", myDroppedImageHandler);
}

private function myDroppedImageHandler(url:String, x:Number, y:Number):void {

  var container:Sprite = new Sprite();
  container.x = x;
  container.y = y;
  addChild(container);

  var loader:Loader = new Loader();
  var request:URLRequest = new URLRequest(url);
  loader.load(request);

  container.addChild(loader);
}

Hier ist der HTML / jQuery-Code

<html>
<head>
  <title>XHTML 1.0 Transitional Template</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.2/jquery-ui.min.js"></script>
  <script type="text/javascript">
    $(function() {
      $("#dragIcon").draggable();

      $("#flash").droppable({ 
        tolerance : "intersect",
        drop: function(e,ui) {

          // Get the X,Y coords relative to to the flash movie
          var x = $(this).offset().left - ui.draggable.offset().left;
          var y = $(this).offset().top - ui.draggable.offset().top;

          // Get the url of the dragged image
          var url = ui.draggable.attr("src");

          // Get access to the swf
          var swf = ($.browser.msie) ? document["MyFlashMovie"] : window["MyFlashMovie"];

          // Call the ExternalInterface function
          swf.handleDroppedImage(url, x, y);

           // remove the swf from the javascript DOM
          ui.draggable.remove();
        }
      });
    });
  </script>
</head>
<body>

  <img id="dragIcon" width="16" height="16" alt="drag me" />

  <div id="flash">
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
      id="MyFlashMovie" width="500" height="375"
      codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
      <param name="movie" value="MyFlashMovie.swf" />
      <param name="quality" value="high" />
      <param name="bgcolor" value="#869ca7" />
      <param name="allowScriptAccess" value="sameDomain" />
      <embed src="MyFlashMovie.swf" quality="high" bgcolor="#869ca7"
        width="500" height="375" name="MyFlashMovie" align="middle"
        play="true" loop="false" quality="high" allowScriptAccess="sameDomain"
        type="application/x-shockwave-flash"
        pluginspage="http://www.macromedia.com/go/getflashplayer">
      </embed>
    </object>
  </div>

</body>
</html>

Ich würde sagen, dass es möglich ist, fallen zu Blitz, wenn Sie erkennen, dass das Element auf der gezogen wird, der den Flash-Sachen enthält, und Sie Ihre geschleppt Objekte einen Z-Index höher haben als der Blitz. Dann, wenn sie fallen gelassen wird, können Sie in Flash mit Javascript sprechen, es zu sagen, wo und was fallen gelassen wurde.

Allerdings andersrum wahrscheinlich viel schwieriger ist, weil Sie erkennen müsste, wenn das Objekt den Rand des Flash-Film trifft und „pass“ an die Javascript-Handler (erstellen Sie es in den HTML-Code, verstecken sie in Flash ).

ist die Frage wohl zu wissen, ob es die Mühe wert ist, oder wenn Sie vielleicht alles in JS oder in Flash erreichen können?

Moment mal, die Kapselung Punkt ist ein gültiger, aber Blitz kann JS-Funktionen ausführen, und Seldaek ist richtig, dass ein HTML-Element mit einem höheren Z-Index auf dem Flash-Film schweben soll. Also, wenn Sie alle ziehen in JS Handhabung tun und hatten den Blitz las ihre eigenen Dimensionen und die Position des Zeigers in der App es JS Methoden signalisieren könnte, dass Slave-Element (e) auf den Zeiger selbst (vor allem), wenn der Zeiger läßt die Grenzen des Flash-App. Es wäre allerdings ziemlich behaart sein.

Wenn die ganze Seite ist eine große Embedded-Flash-Datei dann ja es möglich ist.

Ich glaube nicht, dass man es anders acheive kann

Nicht möglich in Flash -. Es sei denn, Sie wollen in der gleichen Flash-Anwendung auf ein Ziel ziehen

Könnte wahrscheinlich mit einem signierten Java-Applet ausgeführt werden (aber wer will diesen Weg gehen?)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top