2011-01-13 3 views
0

Je suis nouveau au flash, mais j'ai le glisser-déposer pour mes MovieClip et je peux donc les manipuler de cette manière. Mais je voudrais être capable d'afficher une image en fonction de l'endroit où l'utilisateur clique sur la scène de film. Quel serait le code qui charge une image, onClick, à la souris X et Y? MerciFaire une image apparaître dynamiquement dans FLASH

+0

Vous pouvez également utiliser mon glisser-déposer algorithme, en gardant le clip d'origine à sa place et en laissant une image du movieclip où il a été « abandonné » serait tout aussi utile .. –

Répondre

0

Je suis principalement un développeur Flex, mais cet extrait de code de AS3 devrait fonctionner correctement pour vous en Flash ainsi:

addEventListener(MouseEvent.CLICK,myMouseHandler); 

private function myMouseHandler(event:MouseEvent):void 
{ 
    var swfLoader:SWFLoader=new SWFLoader(); 
    swfLoader.source="http://www.google.com/images/logos/ps_logo2.png"; 
    swfLoader.x=mouseX; 
    swfLoader.y=mouseY; 
    addChild(swfLoader); //note in flex 4 adding to container need to use addElement otherwise this code executes in there fine as well. 
} 

La documentation pour AS3 est assez complet et se trouve ici: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/index.html ils ont fait un bon travail avec cette version de la documentation qui vous donne des filtres en haut de la page pour voir uniquement les éléments disponibles en Flash uniquement ou en utilisant un framework Flex ou en utilisant AIR. Une explication rapide de tout cela: AS3 est le langage de script utilisé pour écrire du code qui est compilé dans ce que l'on appelle le bytecode AS3 (généralement tous dans un fichier avec une extension swf ou swc) qui est ensuite interprété par le plugin Flash dans le navigateur. MXML est un "langage de balisage déclaratif" très similaire en apparence au HTML utilisant des balises et imbriquant pour représenter les relations parent/enfant (ils sont tous les deux lâchement XML), le MXML est compilé en AS3 puis en bytecode AS3 et encore une fois interprété par le plugin flash. Ce qui est intéressant avec Flex, c'est qu'il y a beaucoup de composants prédéfinis fournis et le framework crée un ensemble de règles robustes pour créer des composants extensibles avec un cycle de vie bien défini (vous savez qu'il est créé une fois, vous savez seulement pour mettre à jour les parties qui nécessitent une mise à jour, c'est-à-dire createChildren, commitProperties, measure etc.). AIR est une version intégrée d'Adobe qui est essentiellement un lecteur flash pour le bureau où il peut être installé en dehors du navigateur et n'est donc pas limité aux fonctionnalités du navigateur (en raison de problèmes de sécurité, de nombreuses opérations sont bloquées par le navigateur). AIR est essentiellement des goodies liés à Flex + Desktop. Je sais que c'est plus que ce que vous demandez, mais j'espère que vous trouverez cette information utile.

Bonne chance,

Shaun

+0

Je crois SWFLoader est disponible en Flex. Dans ActionScript non-Flex, vous utiliseriez normalement un chargeur, comme dans l'exemple de Matt McDonald. –

+0

@Lars Ugh, devrait tenir compte de mes propres conseils ici et utiliser les filtres sur la page de documentation, merci pour le suivi. J'espère que tout cela a été utile de toute façon. – shaunhusain

+0

Aucun problème pour les gars de soutien. Trucs utiles. –

2

Le code que vous cherchez diffère un peu de l'autre réponse.

import flash.display.Loader; 
import flash.events.Event; 
import flash.events.MouseEvent; 
import flash.net.URLRequest; 

var loader:Loader; 
var toLoad:URLRequest; 

stage.addEventListener(MouseEvent.CLICK, clicked, false, 0, true); 

function clicked(evt:MouseEvent):void 
{ 
    //if loader already exists, remove it from stage 
    if(loader) 
    { 
     removeChild(loader); 
    } 
    loader = new Loader(); 
    toLoad = new URLRequest("image.png"); 
    loader.load(toLoad); 
    addChild(loader); 
    //listen for when load completes 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleted, false, 0, true); 
} 

function loadCompleted(evt:Event):void 
{ 
    //center to mouse position 
    loader.x = (mouseX - (loader.contentLoaderInfo.width)/2); 
    loader.y = (mouseY - (loader.contentLoaderInfo.height)/2); 
} 
Questions connexes