Pregunta

Digamos que yo quiero una página web que contiene un Flash, applet y me gustaría arrastrar y colocar algunos objetos de o para el resto de la página web, es esto posible?

Bonificación si usted sabe de un sitio web en algún lugar que hace!

¿Fue útil?

Solución

Este me ha intrigado.Sé jessegavin publicado algo de código, mientras que yo fui a averiguar esto, pero esta es la prueba.Tengo una super-simple ejemplo de trabajo que le permite arrastrar y desde flash.Es bastante complicado como lo tiré juntos durante mi hora de almuerzo.

Aquí está el demo

Y el fuente

La clase base es tomado directamente de la Interfaz Externa De LiveDocs.He añadido MyButton por lo que el botón puede tener un poco de texto.La mayoría de las javascript viene de la misma LiveDocs ejemplo.

He compilado esta usando mxmlc.

Otros consejos

DESCARGO de responsabilidad Yo no he probado este código en todo, pero la idea de que debe trabajar.También, este sólo se encarga de arrastrar a una película flash.

Aquí un poco de código de Actionscript 3.0 que hace uso de la ExternalInterface clase.

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

Aquí está el código HTML/jQuery código

<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>

Yo diría que es posible caída a Flash si se detecta que el elemento es arrastrado a la que contiene el flash cosas, y establecer sus objetos arrastrados a tener un z-index mayor que el de flash.Luego, cuando se ha caído usted puede hablar con Flash usando javascript que decir dónde y qué se ha caído.

Sin embargo, la otra manera es probablemente mucho más difícil, porque tendría que detectar cuando el objeto golpea el borde de la película flash y "pass" para el controlador de javascript (cree que en el html, esconderlo en flash).

La pregunta es, probablemente, para saber si vale la pena, o si usted puede lograr todo en JS o en Flash ?

La paciencia, la encapsulación punto es válido, pero flash puede ejecutar JS funciones, y Seldaek es justo que un elemento HTML con un mayor índice z debe flotar en la película flash.Así que si usted hizo todo lo que el arrastre de manejo en JS y tenía el flash leer sus propias dimensiones y la posición del puntero en la aplicación que puede ser señal de JS métodos que esclavo elemento(s) para el puntero incluso (sobre todo) cuando el puntero sale de los límites de la aplicación flash.Sería bastante peludo, aunque.

Si todo el sitio es un gran flash incorporado archivo, a continuación, sí que es posible.

No creo que se puede lograr de ninguna otra manera

No es posible en flash - a menos que usted desea arrastrar a un destino dentro de la misma aplicación flash.

Probablemente se podría hacer con un subprograma Java (pero, ¿quién quiere ir por ese camino?)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top