...

View Full Version : can html trigger flash events?



rmedek
01-07-2005, 05:22 AM
I guess that's the question. I thought it would be simple to find an answer, but I'm having trouble finding a concise one.

Essentially I'd like an "onclick" event on a link to trigger a flash animation, rather than having an entire flash menu. Ideas?

_Aerospace_Eng_
01-07-2005, 02:15 PM
u could try something like this

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/javascript">
function flashani(){
document.getElementById("flash").innerHTML="<embed src='yourflash.swf' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='xx' height='xx'></embed>";
}
</script>
</head>

<body>
<a href="javascript:void();" onclick="flashani()">start flash</a>
<span id="flash"></span>
</body>
</html>
just be careful not to add any " in between the innerHTML quotes or u'll get a script error, but what this code does is with the onclick even in the link it will embed the flash file dynamically into the page into the span that has an id of flash, and just change the xx's in the height and width to your liking

rmedek
01-07-2005, 11:17 PM
Thanks, but I'm not sure I'd go that route...

a) <a href="javascript:void();"... > isn't very accessible.

b) the animation will actually already be embedded; what I'm trying to do is have a link, when clicked, trigger a sound or movement from the animation, without having to have the entire menu in Flash.

Hopefully that clears things up a bit... thanks for your help, though :)

firepages
01-08-2005, 01:23 AM
You are going to have to use javascript to talk to the flash movie , you cant do it in HTML , in which case the answer to your question is no .

if you give your flash embed/object tag an id ..

etc ... id="my_movie">

then set a refererence point (poxy detection (courtesy of MM ;)))


<script>
var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
var mc = InternetExplorer ? window.my_movie : window.document.my_movie;
/*e.g.*/
function gotoframe(frame){
mc.GotoFrame(frame) ;
}
</script>


then <a href="javascript:gotoframe(5);">blah</a>

should work , once you have the movie reference (mc) you can even call functions and methods declared in that movie (e.g. mc.do_something(variable) )

mindlessLemming
01-08-2005, 01:50 AM
Hmmm...
I did a quick bit of research, and apparently this should work:


<script type="text/javascript">
<!--
//<object> with id="movie"
function PassFlash(){
document.getElementById('movie').SetVariable("text", "hello");
}
// <a> with id="playSwf"
document.getElementById('playSwf').onclick = PassFlash;
//-->
</script>

The 'SetVariable' function is from the MM docs, I think it may be horribly out of date (and won't work with IE/mac)

Then you would create an empty, hidden dynamic text field with a var of 'text' (not an instance name of 'text') which would receive the variable. To detect the presence of the variable from Flash, I'd use an onEnterFrame routine that starts the clip and calls 'delete onEnterFrame;' once the var has been found. The downside of this is that the onEnterFrame routine will eat the users resources (only a tiny bit, but still...) until it is told to get lost.

An easier way would be to dynamically insert a flashvar (http://www.ultrashock.com/ff.htm?http://www.ultrashock.com/tutorials/flashmx/FlashVars.php) into the object tag, unfortunately those variables are read by flash on load, so you would have to find a way of triggering the flashvar import again, which would probably mean refreshing the <object> tag... not ideal, not at all :(

I'm happy to nut this one out a bit more, I just don't have Flash at home so I can't test any of these theories :o

Forget my insane jibberish -- go with firepages' option! :eek:

rmedek
01-08-2005, 02:47 AM
Cool, thanks for the help guys!

I'm assuming that I can assign the target of the link to "href" and call the function through "onclick"? Keep in mind I'm a Flash/Javascript idiot... :)

Either way, the movie reference function is just what I need...

mindlessLemming
01-08-2005, 05:03 AM
I'm assuming that I can assign the target of the link to "href" and call the function through "onclick"?


Yep :)
And you'll also want to 'return false;' so the link isn't followed if js is working.
Actually, how are you handling the detection of flash + js? I'm thinking the JS should try and pull a variable or reference the Flash and if it can't (which means flash isn't supported) then it doesn't add the onclick to the link either. That way if the user has javascript but not flash, the link will still point to the html page in the href... does that sound feasible? Maybe I'm off track...

rmedek
01-08-2005, 09:05 AM
Actually, how are you handling the detection of flash + js? I'm thinking the JS should try and pull a variable or reference the Flash and if it can't (which means flash isn't supported) then it doesn't add the onclick to the link either. That way if the user has javascript but not flash, the link will still point to the html page in the href... does that sound feasible? Maybe I'm off track...
Oh man, there you go offering valuable, accessible advice that only makes me work harder :D

I was just planning to offer text link alternatives, but your method seems like something I should at least try. Again, I am a total js/flash newbie, so this might take awhile :) The Flash, btw, is only for a silly effect; there's a floating head that makes comments based on your navigation choices. (yes, this is a fun website I'm working on!)

Crake
01-15-2005, 11:10 PM
if it cud trigger flash events! learn soming new every day

rmedek
01-15-2005, 11:41 PM
omg yess u rnt kdding!



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum