Domanda

Data: un flex TileList con il seguente evento:

<mx:nativeDragDrop>
  <![CDATA[
    if(event.clipboard.hasFormat(ClipboardFormats.FILE_LIST_FORMAT)) {
      var files:Array = event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;

      for each(var file:File in files)
      {
        // file.data is null here!
      }

      this.listData.refresh();
    }
  ]]>
</mx:nativeDragDrop>

Sto cercando di creare un elenco di miniature da file JPEG che mi trascina in questo TileList. Image.source può usare l'url per visualizzare l'immagine, ma ho bisogno di scalare l'immagine verso il basso prima (hi foto rez) ho già la parte di scala fatto salvo che ho bisogno BitmapData dal file e ha nullo per file.data.

Inoltre, ho provato questo:

var x:URLRequest = new URLRequest(value.file.url); // this is a local file (e.g. file:///C:/somefile.jpg)
var b:Bitmap = new Bitmap(x.data as BitmapData);

dati è anche nulli! Così frustrante. Qualsiasi aiuto sarebbe apprezzato.

È stato utile?

Soluzione

Presumo che ciò è una parte di un'applicazione AIR. (Accesso al clipboard da una pianura Flex app non è possibile.)

Non ho esperienza con l'aria, ma il vostro secondo blocco di codice è chiaramente sbagliato. Un esempio URLRequest non fa nulla per sé, non è che un oggetto statico memorizzare i dettagli della richiesta. Al fine di recuperare i dati da tale URL, è necessario creare un Loader, e passa la richiesta a quest'ultima loader in questo modo:

var req:URLRequest = new URLRequest(value.file.url); // this is a local file (e.g. file:///C:/somefile.jpg)
var ldr:Loader = new Loader();
ldr.addEventListener(Event.COMPLETE, function(event:Event):void {
   var b:Bitmap = event.target.content as Bitmap;
});
ldr.load(req);

Naturalmente, dovreste compilare il gestore Event.COMPLETE. Si noti che la classe Loader può essere utilizzato per caricare SWF e di immagine degli oggetti, per tutti tutto il resto, dovreste usare URLLoader e analizzare i dati da soli.

Per quanto riguarda il blocco nativeDragDrop, ecco un frammento della :

  

In genere un gestore per il   nativeDragEnter o nativeDragOver   evento valuta essendo i dati   trascinato, insieme alle azioni di trascinamento   consentito, per determinare se un   oggetto interattivo può accettare una goccia.   Per specificare che un oggetto interattivo   è un obiettivo idoneo, l'evento   conduttore deve chiamare il   NativeDragManager.acceptDrop ()   funzione, passando un riferimento a   l'oggetto. Se l'utente rilascia il   pulsante del mouse sulla designato   oggetto, l'oggetto diventa goccia   bersaglio e invia il   evento nativeDragDrop.

Stai chiamando NativeDragManager.acceptDrop() correttamente?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top