Actionscript - iterativ oprettelse af hændelsesforløb
Hej eksperter.Jeg har en scene, rummende en baggrund + nogle genstande (små, tegnede objekter). Disse ønsker jeg at tilknytte en række hændelser. Disse er som følger:
- De skal kunne trækkes rundt på scenen
- Information om den pågældende genstand skal vises
Hvert objekt er blevet navngivet individuelt. P.t. rummer scenen 4 objekter, der som instance hedder vaseline_mc, spray_mc, sminke_mc og halskaede_mc.
Et screendump kan ses på http://www.vandret.dk/diverse/ho.jpg - og det er lidt vanskelig for mig at forklare problemet på forståeligt dansk, men jeg prøver:
Mine scripts ligger som eksternt tilknyttede .as filer. Følgende kode er et uddrag:
------------------ Kode starter her -----------------
var ting = new Array("vaseline_mc", "spray_mc", "sminke_mc", "halskaede_mc");
var tingsexappeal = new Array(100, 120, 170, 90);
var tingpris = new Array(250, 240, 340, 180);
// Vi vil også ha' en label over vores gear....
function shopstatvis(i) {
this.shopstat_mc.onEnterFrame = function() { // Sørg for, at vores statusramme - som hedder shopstat_mc - følger musepilen
this._x = _xmouse;
this._y = _ymouse;
}
this.shopstat_mc.gotoAndStop(2); // Vis statusboksen
this.shopstat_mc.tingsexappealdynamic.text = tingsexappeal[i]; // Indsæt informationer jf. de definerede arrays
this.shopstat_mc.tingprisdynamic.text = tingpris[i]+",-";
}
function shopstatgem(i) {
this.shopstat_mc.gotoAndStop(1);
}
for (i=0; i<ting.length; i++) {
this[ting[i]].onPress = function() {
startDrag(this, false);
}
this[ting[i]].onRelease = function() {
stopDrag();
}
this[ting[i]].onRollOver = function() {
shopstatvis(i);
}
this[ting[i]].onRollOut = function() {
shopstatgem(i);
}
}
----------------------- Kode slutter her ---------------
På sigt kommer hylderne (jf. linket) til at rumme en stribe varer. MIT PROBLEM er, på en "kodelinie-effektiv" måde, at tildele hver enkelt vare samme egenskaber - men samtidig vide, hvilken vare, man f.eks. klikker på eller har musemarkøren over.
F.eks.: Flyttes musemarkøren over sprayflasken, skal hhv. sexappeal og pris vises i en kasse. For at dette kan se, er jeg nødt til at vide HVILKEN ting jeg har "mouset over". Dvs. en variabel bliver sat lig et tal, som så kan fungere som indexering for mine arrays.
Jeg vil godt kunne få det til at virke, hvis jeg satte hændelser (mouseover, -out, press og release) for objekterne og således tilknytte dem en række egenskaber - men metoden fylder blot ufattelig mange linier med store dele gentagen kode.
