Je suis encore en train de travailler sur une programmation ActionScript assez simple (en Flex), et je suis un peu pris par les événements et les propriétés des objets.J'ai de la difficulté à mettre à jour les propriétés d'un objet dans le programme actionScript de base
J'ai trois fichiers ci-dessous, une application et deux composants. L'objectif de base est très simple - commencer avec deux toiles de localisation et une toile d'un joueur. Lorsque vous cliquez sur un canevas d'emplacement, le joueur mettra à jour ses coordonnées x et y sur ce canevas. Cliquer sur l'autre toile mettra alors à jour les coordonnées x et y du joueur. Répéter.
Je pense que je suis proche, mais je n'arrive pas à comprendre comment obtenir un clic dans location1 ou location2 pour renvoyer leurs coordonnées x et y respectives aux valeurs playerX et playerY. Toutes les suggestions sur cette question spécifique, ou même des suggestions plus larges pour accomplir ceci plus facilement, seraient grandes.
Voici mon dossier de candidature principal:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:ns1="components.*">
<mx:Script>
<![CDATA[
[Bindable]
private var playerX:int = 20;
[Bindable]
private var playerY:int = 20;
private function clickEventHandler(evt:Event):void
{
playerX = evt.x;
playerY = evt.y;
}
]]>
</mx:Script>
<ns1:location x="139" y="168" id="location1"
playerMove="clickEventHandler(event)"/>
<ns1:location x="629" y="168" id="location2"
playerMove="clickEventHandler(event)"/>
<ns1:player x="{playerX}" y="{playerY}"/>
</mx:Application>
Voici mon "emplacement" composant:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
width="200" height="200"
click="clickHandler()">
<mx:Script>
<![CDATA[
import flash.events.Events
private function clickHandler():void
{
var moveClick:Event = new Event("playerMove");
moveClick.x = target.x;
moveClick.y = target.y;
dispatchEvent(moveClick);
}
]]>
</mx:Script>
<mx:Metadata>
[Event(name="playerMove")]
</mx:Metadata>
</mx:Canvas>
Et voici mon composant joueur:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
width="50" height="100">
</mx:Canvas>
MISE À JOUR:
J'ai été en mesure de simuler l'effet désiré avec le code suivant:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
[Bindable]
private var playerX:int = 20;
[Bindable]
private var playerY:int = 20;
]]>
</mx:Script>
<mx:Canvas x="139" y="168" id="location1" width="200" height="200"
click="playerX = location1.x, playerY = location1.y" backgroundColor="#F60D0D"/>
<mx:Canvas x="629" y="168" id="location2" width="200" height="200"
click="playerX = location2.x, playerY = location2.y" backgroundColor="#EDE513"/>
<mx:Canvas id="player1" x="{playerX}" y="{playerY}"
width="100" height="100" backgroundColor="#3458F5"/>
</mx:Application>
Maintenant, je suis en train de travailler modularisation pour atteindre mon véritable objectif final, qui est en vous assurant que je comprends comment les événements, les objets et les objets d'événement travail .
Quelles sont les valeurs de evt.x et evt.y qui finissent avec? – CookieOfFortune
CookieOfFortune, je ne peux même pas arriver à ce point car il ne me laissera pas compiler jusqu'à ce que j'ai résolu les erreurs que j'ai mentionnées ci-dessous dans la suggestion de Eric. – IanWhalen