as3 dynamic text field does not get input

#1
Hello.

I have a textfile wich formatted in as3 like this:

Code: Select all

	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.geom.Matrix;
	
	var scrolling_speed:int = 3;
	var format2:TextFormat = new TextFormat  ;
	f0.type = TextFieldType.DYNAMIC;
	f0.x = 1827;
	f0.selectable = false;
	f0.border = false;
	f0.multiline = false;
	f0.wordWrap = false;
	f0.autoSize = TextFieldAutoSize.LEFT;
	
	f0.setTextFormat(format2);
	
	var snapshot:BitmapData = new BitmapData(f0.width,f0.height,true,0x000000);
	snapshot.draw(f0, new Matrix());
	
	var bmp:Bitmap = new Bitmap(snapshot);
	addChild(bmp);
	
	bmp.x = 1827;
	bmp.y = 60;
	
	bmp.mask = crawl_mask_mc;
	
	bmp.addEventListener(Event.ENTER_FRAME,move_text);
	function move_text(myevent:Event):void
	{
		bmp.x -=  scrolling_speed;
		if (bmp.x < (300 - bmp.width))
		{
			bmp.x = 1827;
		}
	}
But it won't get the typed text in field f0
Howcome?

Re: as3 dynamic text field does not get input

#2
Hi.

There's an automated process going on to achieve the "f0" mapping once you generate a template with the exporter. However, this only applies to text fields on the timeline.

So, in order to get data through to your text field you could either

a (recommended) register a component:
1) Wrap your text field in a new class, with MovieClip as base class.
2) Implement the interface ICasparComponent, which makes you set functions SetData(xmlData:XML):void and dispose():void. dispose() is just a convenience method to allow you clean up if the component gets removed.
3) In SetData, you will receive all the <componentData> with a @id matching your components (your MovieClip) name. So make sure to set a name, perhaps in your constructor, or on the timeline if you create it there.
4) Manually extract the @value attribute and update your textfield.



b (unfortunately the most common way, manually set data)
1) override public function SetData(xmlData:XML):void in your template's document class, extending the base class CasparTemplate.
2) Traverse throug all <componentData /> childs withint the <templateData /> received in SetData, and extract + update your text field from here.
3) The downsides of this method, which the proper component chain (brilliantly) solves are: you avoid race conditions, since the data buffers until the component is ready and your don't need to hold references to all components.

Remember: all object can be registered components and have data injected, not only TextFileds!
Jesper Stærkær
Independent Consultant at SuperFly.tv

Who is online

Users browsing this forum: No registered users and 1 guest

cron