PDA

Volledige versie bekijken : [PV3D] Referentieprobleem


Mr. Black
%Europe/Berlin %738 %2007, 17:42
Ha guys.

Ik zit weer eens in de knoop met PV3D. Situatie is als volgt:

- Ik heb 9 MovieClips.
- Deze worden ingeladen, er worden Planes van gemaakt. Dit gebeurt in de Menu3D Class.
- Mijn menu moet ronddraaien / op de muis reageren, dit gebeurt in een MenuController Class.

Tot zover niet veel speciaals. Nu maak ik in de MenuController Class listeners aan voor MOUSE_OVER en MOUSE_OUT:

for ( var i:uint = 0; i < _totalItems; i++ ) // _totalItems is het aantal MovieClips, 9 dus
{
var item:Plane = _menu.getItem( i ); // met deze functie krijg ik een Plane van de Menu3D Class
item.rotationZ = 360 / _totalItems * i;

item.container.addEventListener( MouseEvent.MOUSE_OVER, mouseOverHandler );
item.container.addEventListener( MouseEvent.MOUSE_OUT, mouseOutHandler );

_items.push( item ); // en ik stop de Plane nog in een Array
}

Maar nu komt het vervelende: je kan op een Plane zelf géén listener voor MOUSE_OVER en MOUSE_OUT zetten. Dat gebeurt dus op de container. Nu wil ik in de functie mouseOverHandler de alpha van mijn Sprite veranderen. Geen probleem:

private function mouseOverHandler( event:Event ):void
{
event.currentTarget.alpha = 80;
}

En nu wil ik de functie Material.updateBitmap(); uitvoeren. Enig idee hoe ik vanuit de functie mouseOverHandler() tot het Material van mijn Plane kom?

In het kort:
Op de container van een Plane zet ik een listener. Vanuit de functie die deze aanroept, moet ik refereren naar het Material van mijn Plane.

Alvast bedankt. :)

BernardV
%Europe/Berlin %866 %2007, 20:47
Daar is een Dictionary heel handig voor:
_itemDictionary[item.container] = item;
Dan kun je in de dictionary met event.target weer het item opvragen.
Je hoeft niet bang te zijn voor veel geheugen gebruikt, er staan alleen referenties in en geen volledige objecten.

Mr. Black
%Europe/Berlin %492 %2007, 11:48
Cool! Werkt feilloos.

Alleen heb ik nu wel 2 instanties die alle Planes vasthouden (de Array _items en het Object _itemDictionary). Maar ach, omdat het beide toch maar refenties zijn, zal dat niet zo veel uitmaken.

Dank. :)

Freshface
%Europe/Berlin %964 %2007, 23:09
Hey,

Zou je een voorbeeld van die Dictionary kunnen posten?
Ik heb hetzelfde probleem.

Al bedankt.

Freshface
%Europe/Berlin %968 %2007, 23:15
Ok, heb het opgelost :)
Was zeer simpel