Archief - images.additem(movie->get('img'));

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

KingOfWoods

Legacy Member
Hallo

Ik heb volgend stukje code in flex:
Code:
for each(var movie:Object in acMovies) {
					trace(ObjectUtil.toString(movie);
						images.additem(movie->get('img'));
						}

nu gaat dat -> get niet want dat komt uit andere programmeer talen, maar wat is de vervanging hiervoor in flex?

Ik zit met verschillende <img> tags in mijn xml en deze probeer ik dus te capturen en in een nieuwe array te steken.

merci alvast

Zero Grav

Legacy Member
Dat is een getter van een variabele, wordt gebruikt om de waardes van private/protected variabelen gecontroleerd op te vragen in andere klasses. Codegewijs werkt dat als volgt:

Code:
private var _img:String;

public function get img():String {
     return this._img;
}

//optioneel
public function set img(newImg:String):void {
     this._img = newImg;
}

In een andere klasse zoudt ge dan gewoon instance.img; kunnen doen, net als bij een gewone public variabele.

Maar eigenlijk is dat allemaal overbodige info want gij kunt gewoon movie.img schrijven als ge de code uit de vorige thread gebruikt hebt omdat ge gewoon een standaard Object hebt gebruikt en die dynamisch toegevoegde waardes allemaal publiek toegankelijk zijn.

KingOfWoods

Legacy Member
Zero Grav zei:
Dat is een getter van een variabele, wordt gebruikt om de waardes van private/protected variabelen gecontroleerd op te vragen in andere klasses. Codegewijs werkt dat als volgt:

Code:
private var _img:String;

public function get img():String {
     return this._img;
}

//optioneel
public function set img(newImg:String):void {
     this._img = newImg;
}

In een andere klasse zoudt ge dan gewoon instance.img; kunnen doen, net als bij een gewone public variabele.

Maar eigenlijk is dat allemaal overbodige info want gij kunt gewoon movie.img schrijven als ge de code uit de vorige thread gebruikt hebt omdat ge gewoon een standaard Object hebt gebruikt en die dynamisch toegevoegde waardes allemaal publiek toegankelijk zijn.

Dat dacht ik dus ook, maar dat blijkt dus niet te werken. Ik heb daar redelijk lang achter liggen zoeken en uiteindelijk zo opgelost.

Code:
public function filler(event:ResultEvent):void{										
acMovies.addAll(GetMovieSrv.lastResult.movies.movie[B][COLOR="Red"][U].img[/U][/COLOR][/B]); [COLOR="Red"]img staat er niet achter enkel in dit vb[/COLOR]

Als ik daar .img achter zet crasht het dus allemaal.
krijg ik
Main Thread (Suspended: Error: Unknown Property: 'img'.)

EDIT:

Ik versta uw oplossing niet goed. Zal wel aan mij liggen, maar hoe gaat die getter nu weten waar hij moet zoeken? uiteindelijk is de XML die ik heb geen echte XML en dat zorgt mss voor problemen, want zoals gemeld kan ik niet gewoon .img erachter zetten.

Zero Grav

Legacy Member
Maja, die oplossing van mij gaat ge niet kunnen toepassen als ge geen aparte klasse hebt aangemaakt. Ge moet die code daar namelijk in zetten dan.

Soit, als ge een breakpoint zet op de lijn van die trace, wat zegt em dan over uw movie Object?

KingOfWoods

Legacy Member
EDIT: beetje overzichtelijker gemaakt:

Code:
for each(var moviex:Object in acMovies) {
trace("##################################################");
	trace("["+ObjectUtil.toString(moviex)+"]");
	//images.additem(movie->get('img'));
}

result
##################################################
[(Object)#0
img = "http://ia.media-imdb.com/images/M/MV5BMjE0ODI0NTM1OV5BMl5BanBnXkFtZTcwODE0MjYyMQ@@._V1_SX320.jpg"
plot = "Aladdin, a street urchin, accidentally meets Princess Jasmine, who is in the city undercover. They love each other, but she can only marry a prince."
rating = 8
time = "1 hr 30 mins"
title = "Aladdin"
year = 1992]
##################################################
[(Object)#0
img = "http://ia.media-imdb.com/images/M/MV5BMTgyNjg4NTQ3OF5BMl5BanBnXkFtZTcwNTc2ODk3Mg@@._V1_SX320.jpg"
plot = "A look at man's relationship with Dirt. Dirt and humans couldn't be closer. We started our journey together as stardust..."
rating = 7
time = "1 hr 26 mins"
title = "Dirt! The Movie"
year = 2009]
##################################################
[(Object)#0
img = "http://ia.media-imdb.com/images/M/MV5BNzU0MzM4NDEwMl5BMl5BanBnXkFtZTYwMTQxMTY5._V1_SX320.jpg"
plot = "A young cop must prevent a bomb exploding aboard a city bus by keeping its speed above 50 mph."
rating = 7
time = "1 hr 56 mins"
title = "Speed"
year = 1994]

Zero Grav

Legacy Member
Het zou dus wel gewoon moeten werken aangezien em img teruggeeft als property.
Heb even snel een testje opgezet, misschien dat dat voor u verduidelijkt waar het probleem zou zitten.

Code:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
					   xmlns:s="library://ns.adobe.com/flex/spark" 
					   xmlns:mx="library://ns.adobe.com/flex/mx"
					   creationComplete="onCreationComplete(event)">
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.events.FlexEvent;
			import mx.utils.ObjectUtil;
			
			protected var moviesCollection:ArrayCollection;
			
			protected function onCreationComplete(event:FlexEvent):void
			{
				moviesCollection = new ArrayCollection();
				
				var mOne:Object = new Object();
					mOne.img = "http://ia.media-imdb.com/images/M/MV5BMjE0ODI0NTM1OV5BMl5BanBnXkFtZTcwODE0MjYyMQ@@._ V1_SX320.jpg";
					mOne.plot = "Aladdin, a street urchin, accidentally meets Princess Jasmine, who is in the city undercover. They love each other, but she can only marry a prince.";
					mOne.plot = 8;
					mOne.time = "1 hr 30 mins";
					mOne.title= "Aladdin";
					mOne.year = 1992;
					
				moviesCollection.addItem(mOne);
				
				var mTwo:Object = new Object();
					mTwo.img = "http://ia.media-imdb.com/images/M/MV5BMTgyNjg4NTQ3OF5BMl5BanBnXkFtZTcwNTc2ODk3Mg@@._ V1_SX320.jpg";
					mTwo.plot = "A look at man's relationship with Dirt. Dirt and humans couldn't be closer. We started our journey together as stardust...";
					mTwo.plot = 7;
					mTwo.time = "1 hr 56 mins";
					mTwo.title= "Speed";
					mTwo.year = 1994;
					moviesCollection.addItem(mTwo);
					
					
				for each(var movie:Object in moviesCollection) {
					exampleField.appendText(movie.img + "\n");
				}
				
				
			}
			
		]]>
	</fx:Script>
	
	<s:TextArea width="100%" height="100%" id="exampleField" />
</s:WindowedApplication>

KingOfWoods

Legacy Member
Bedankt voor de moeite tot hiertoe Zero. Wil u altijd rep+ geven, maar moet eerst iemand anders reppe alvorens u teru te kunne reppe.

Anyway. ik ben ook al een stukje vooruit geraakt en krijg nu een error
TypeError: Error #1009: Cannot access a property or method of a null object reference.

Dit is zeer eigenaardig want ik heb nu dit geprobeerd:

for each(var moviex:Object in acMovies) {
trace("##################################################");
var x = ObjectUtil.toString(moviex.img);
trace("["+x+"]");
images.addItem(x);
}

Hij traced dus enkel mijn url's nu en zou deze ondertussen al in een string moeten hebben gestoken, maar toch wil hij x niet in mijn movies steken.

Zero Grav

Legacy Member
Pas op met uw datatypes. Ge hebt x niet vastgelegd als zijnde een String, dus daar zou em dan wel een probleem van kunnen maken.

Gewoon in die for each: images.addItem(moviex.img); zou perfect moeten werken.

KingOfWoods

Legacy Member
Zero Grav zei:
Pas op met uw datatypes. Ge hebt x niet vastgelegd als zijnde een String, dus daar zou em dan wel een probleem van kunnen maken.

Gewoon in die for each: images.addItem(moviex.img); zou perfect moeten werken.

Dat werkt dus niet & ik heb x al String gegeven, maar same result. Ik word er hier ondertussen orendol van, want ik krijg gewoon mijn links te zien in trace, dus x bevat alles wat het moet bevatten en toch wil hij geen addItem doen :s

Zero Grav

Legacy Member
Ahja, maar ge hebt uw images toch wel aangemaakt?

images = new ArrayCollection(); I mean.

KingOfWoods

Legacy Member
Code:
				for each(var moviex:Object in acMovies) {
					trace("##################################################");
					//trace("["+ObjectUtil.toString(moviex.img)+"]");
					var x:String = ObjectUtil.toString(moviex.img);
					trace(x);
					imagesx.addItem(moviex.img);
					// geeft Error #1009: Cannot access a property or method of a null object reference.
					
					imagesx.addItem(ObjectUtil.toString(moviex.img));
					// geeft Error #1009: Cannot access a property or method of a null object reference.
					
					imagesx.addItem(x);
					// geeft Error #1009: Cannot access a property or method of a null object reference.
					
				}

Dus wat ik ook ingeef, elke keer zelfde error :s
Ik versta er echt niks meer van.

KingOfWoods

Legacy Member
Zero Grav zei:
Ahja, maar ge hebt uw images toch wel aangemaakt?

images = new ArrayCollection(); I mean.

private var imagesx:ArrayCollection; yep boven mijn functie.

KingOfWoods

Legacy Member
k nm, het werkt. idd mijn array aanmaken was ik compleet vergeten.

Dank u Zero. Echt geschift dat ge da nog ziet op dit uur. En nog geschifter da ik da compleet vergeten ben :shame

Zero Grav

Legacy Member
Maar ook die new ArrayCollection? Als dit werkt:
Code:
trace(moviex.img);
dan zit de fout ergens in het aanmaken van die imagesx alleszins.

Als em bij
Code:
trace(imagesx);
null teruggeeft weet ge hoe laat het is.


Edit: Lol ja, dat is wel een ambetante fout. 'k Had er niet direct aan gedacht om daar te kijken.

KingOfWoods

Legacy Member
Zero Grav zei:
Maar ook die new ArrayCollection? Als dit werkt:
Code:
trace(moviex.img)
dan zit de fout ergens in het aanmaken van die imagesx alleszins.

Als em bij
Code:
trace(imagesx)
null teruggeeft weet ge hoe laat het is.


Edit: Lol ja, dat is wel een ambetante fout. 'k Had er niet direct aan gedacht om daar te kijken.

Da is bij de meeste domme fouten zo e. Maar soit, weer een les bijgeleerd. ondertussen hier toch al mee bezig van 17 uur :rofl: dus ja productief dagje wel.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan