Archief - FLASH: TypeError: Error #1010 bij aanspreken van klasse (Flash 9 - AS3)

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.

Gerritn

Legacy Member
Ik heb dus mn klasse desat.menus.HorizontalMenu
Deze wil ik aanspreken vanuit een file, en ik krijg volgende error bij het compilen van die fla:

Code:
TypeError: Error #1010: A term is undefined and has no properties.
	at desat.menus::HorizontalMenu$iinit()
	at fcms_fla::MainTimeline/fcms_fla::frame1()

Google biedt mij geen oplossing aan. Misschien dat iemand al iets gelijkaardig meegemaakt heeft.

Hier mijn code

FLA-file
Code:
import desat.menus.HorizontalMenu;
var arr:Array = new Array();
arr.push("home");
arr.push("news");
var $root:MovieClip = this;
var menu:HorizontalMenu = new HorizontalMenu($root, arr, 10, 10 ,120);

HorizontalMenu.as (in de map desat/menus/ )
Code:
//******************************************************************************************
//   HorizontalMenu class for FCMS.
//
//   @author:    Gerrit Bertier
//   @contact:   [email protected]
//               http://desaturated.be
//
//   @properties:  parentMovie (MovieClip) = the parent movie for the menu item
//                 menuText    (Array)     = the array containing the text for the items
//                 xpos        (Number)    = the x-position for the 1st menu item
//                 ypos        (Number)    = the y-position for the 1st menu item
//                 itemWidth   (Number)    = the width of a menu item (default: 120)
//
//******************************************************************************************

package desat.menus {
	// Imports
	import flash.display.MovieClip;
	import flash.text.TextFormat;
	import flash.text.TextField;
	//
	public class HorizontalMenu {
		// Properties
		var _parentMovie:MovieClip;
		var _menuText:Array = new Array();
		var _xpos:Number = 0;
		var _ypos:Number = 0;
		var _itemWidth:Number = 120;
		//
		// Getters & setters
		public function get parentMovie():MovieClip {
			return this._parentMovie;
		}
		public function set parentMovie(newValue:MovieClip):void {
			this._parentMovie = newValue;
		}
		public function get MenuText():Array {
			return this._menuText;
		}
		public function set MenuText(newValue:Array):void {
			this._menuText = newValue;
		}
		public function get xpos():Number {
			return this._xpos;
		}
		public function set xpos(newValue:Number):void {
			this._xpos = newValue;
		}
		public function get ypos():Number {
			return this._ypos;
		}
		public function set ypos(newValue:Number):void {
			this._ypos = newValue;
		}
		public function get itemWidth():Number {
			return this._itemWidth;
		}
		public function set itemWidth(newValue:Number):void {
			this._itemWidth = newValue;
		}
		// Methods
		function HorizontalMenu(parentMovie:MovieClip, menuText:Array, xpos:Number, ypos:Number, itemWidth:Number = 120):void {
			_parentMovie = parentMovie;
			_menuText = menuText;
			_xpos = xpos;
			_ypos = ypos;
			_itemWidth = itemWidth;
			// Text formats for the menu items
			var tfmt_normal:TextFormat = new TextFormat();
			tfmt_normal.align = "center";
			tfmt_normal.color = 0x333333;
			tfmt_normal.font = "Trebuchet MS";
			tfmt_normal.size = 11;
			var tfmt_hover:TextFormat = new TextFormat();
			tfmt_hover.align = "center";
			tfmt_hover.color = 0x666666;
			tfmt_hover.font = "Trebuchet MS";
			tfmt_hover.size = 11;
			// Creating a movie clip and the textfield withing that movieclip for each menu item
			for (var i = 0; i < menuText.length; i++) {
				var my_mc:MovieClip = new MovieClip();
				my_mc.name = "menuitem"+i+"_mc";
				var menu_txt:TextField = new TextField();
				menu_txt.name = "menuitem_txt";
				my_mc.addChild(menu_txt);
				_parentMovie.addChild(my_mc);
				my_mc.menuitem_txt.mouseEnabled = false;
				my_mc.menuitem_txt.setTextFormat(tfmt_normal);
				my_mc.menuitem_txt.text = _menuText[i];
			}
		}
	}
}

Breen

Legacy Member
De error #1010 die je krijgt, is geen compiler error, maar een runtime error.

Link naar language reference:
http://livedocs.adobe.com/flex/201/langref/runtimeErrors.html

Link naar mail archives over dit probleem:
http://www.mail-archive.com/search?...m&q="term+is+undefined+and+has+no+properties"

Probeer eens volgende lijn te commenten (i'm guessing here too)?
my_mc.menuitem_txt.text = _menuText;

'k Weet niet of je het al doet, maar 'k zou aanraden om bij problemen als deze naar bijvoorbeeld Kirupa.com te gaan voor help, normaal gezien heb je daar veel meer kans op een oplossing.

Gerritn

Legacy Member
Hmm, dat blijkt ook niet te helpen, ik zal het es op Kirupa gaan vragen inderdaad, lijkt me een goed idee.
Toch bedankt :)

Breen

Legacy Member
De errors geven je geen enkel idee wat het zou kunnen zijn. Zo'n error krijg je in het framework bij een dataGrid, en daarbuiten meestal bij het aanspreken van een onbestaand item in een array

Gerritn

Legacy Member
Ik heb ff alle code binnen die for-loop als commentaar gezet, en gewoon dit gedaan

Code:
trace(_menuText[i]);

Wat mij toch geen problemen geeft :s

Edit: het werkt dus wel als ik mn properties van mn text_txt instel voor ik de addChild methode uitvoer. (Thanks to Breen)
Deze mag dus gesloten worden.
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