• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 341
  • Last Modified:

Selecting text in dynamic text box for linking

I have a dynamic textbox that pulls from an XML file.  Is there a way I can have my code search the dynamic text box for certain words, like "Sarah", and change the color of the word and have it gotoAndPlay a certain keyframe when clicked on?
0
walker6o9
Asked:
walker6o9
  • 7
  • 2
1 Solution
 
Aneesh ChopraCommented:
follwoing two function will do the work:

I have also attached a working sample which will help to understand how actually these function can be used.

function setupTextField(txtInst, wordToSearch, gotoFrame) {
	var txt = txtInst.text;
	var wordLength = wordToSearch.length;
	var index = txt.indexOf(wordToSearch);
	if (index == -1) {
		return;
	}
	var linkTxt = '<a href="asfunction:gotoFunction,'+gotoFrame+'"><font color="#FF0000">'+wordToSearch+'</font></a>';
	var prefixTxt = txt.substring(0, index);
	var suffixTxt = txt.substring(index+wordLength, txt.length);
	txtInst.html = true;
	txtInst.htmlText = prefixTxt+linkTxt+suffixTxt;
	//trace(txt.htmlText);
}
function gotoFunction(frame) {
	gotoAndPlay(frame);
}

Open in new window

color-and-link-a-part-of-txt.fla.txt
0
 
walker6o9Author Commented:
Is there a way to mod the setupTextField function slightly so that the gotoFunction includes a second parameter, like so:

function gotoFunction(frame, wordToSearch)
{
upcomingFrameVariable = wordToSearch
gotoAndPlay(frame)

}
0
 
walker6o9Author Commented:
Also, I'm having a really weird problem.  I used your code to select certain words from a textField generated by an XML file.  But when I include a link in the XML text (using CDATA and setting html = true and the textfield to htmlText, I made sure these weren't the problem), it no longer allows me to click on the link.  When I stop using the setupTextField function, the links works again.  Do you know why the function kills the html link, or, more important, how to fix this?
0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
walker6o9Author Commented:
Actually, I fixed the problem I listed above, and its working fine.  

Except that it only does the once for the word.  Is there a way to mod this so that that it picks up all instances of the word in the text if it appears more than once?
0
 
Aneesh ChopraCommented:
Below is the updated code, which makes all occurance of mentioned text into Link and also passes frame and word to the gotoFunction


stop();
//
myText.text = 'this text includes Sarah and Sarah again and again one more time Sarah';
setupTextField(myText,'Sarah',20);
 
 
function setupTextField(txtInst, wordToSearch, gotoFrame) {
	var txt = txtInst.text;
	var wordLength = wordToSearch.length;
	var index = txt.indexOf(wordToSearch);
	if (index == -1) {
		return;
	}
	var linkTxt = '<a href="asfunction:gotoFunction,'+gotoFrame+'~~'+wordToSearch+'"><font color="#FF0000">'+wordToSearch+'</font></a>';
	txt = txt.split(wordToSearch).join(linkTxt);
	txtInst.html = true;
	txtInst.htmlText = txt;
	//trace(txt.htmlText);
}
function gotoFunction(param) {
	var frame = param.split('~~')[0];
	var upcomingFrameVariable = param.split('~~')[1];
	trace(frame+":"+upcomingFrameVariable);
	gotoAndStop(frame);
}

Open in new window

0
 
walker6o9Author Commented:
If I run that for two words in the field, it only works for the last word.

setupTextField(myText,'Sarah',20);
setupTextField(myText,'again',20);


Only again shows up.
0
 
walker6o9Author Commented:
Nevermind, I got it solved.  If you declare txt outside the function, return it, and then run it through away, it works for multiple words.

0
 
walker6o9Author Commented:
Very helpful.  Thank you so much.
0
 
walker6o9Author Commented:
So, this is working fine, but only if the dynamic textbox is on the frame.  If the dynamic textbox is inside a movie clip (or inside a movie clip inside a movie clip, as i have it), the text still changes colors, and the mouse changes to onRollOver state like it does for the other links, but when I click, nothing happens.  However, the links that were embedded from the XML still work.  I put a trace in the gotoFunction(), and it isn't even being read.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Microsoft Exchange Server

The MCTS: Microsoft Exchange Server 2010 certification validates your skills in supporting the maintenance and administration of the Exchange servers in an enterprise environment. Learn everything you need to know with this course.

  • 7
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now