| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #2 (permalink) |
| Web is a hobby Registriert seit: Feb 2004 Ort: nähe Frankfurt
Beiträge: 339
|
Meiner Meinung nach kannst Du über HTML gar keine direkten Funktionen aufrufen. Du kannst aber Variablen zwischen HTML besser JavaScript nach Flash übergeben. Hier müsstest Du dann entweder mit Watch oder einer if-Abfrage die Var abfangen und dann eben eine Funktion aufrufen. So würde ich da ran gehen. Kann aber sein, das hier jemand ist, der hierzu eine bessere ANtwort hat
__________________ Pessimisten sind Optimisten mit Lebenserfahrung Geändert von falconry (18-09-2006 um 13:46 Uhr) |
| | |
| | #3 (permalink) |
| relayit.de Registriert seit: Sep 2001
Beiträge: 427
|
also es gibt ja dieses Flash JavaScript Integration Kit, wie schon einige male erwaehnt heir im forum. ich habs mir noch nicht konkret angeguckt, aber hat wohl definietere features als der workaround mit Setvariable siehe hier. bin aber erst zu spaet drauf gestoßen ![]() in der zwischenzeit habe ich den workaround aber etwas optimiert, da in der geposteten version nur funktionen im globalen namensbereich von dem flashfile aufrufbar waren. falls es jemanden interessiert, hier noch die verbesserte version: datei: JS2FHook.as Code: class JS2FHook extends MovieClip{
function JS2FHook(){
_root.js2f_function = "";
_root.js2f_arg = "";
}
function onEnterFrame(){
if (_root.js2f_function != "") {
eval(_root.js2f_function)(_root.js2f_arg);
_root.js2f_function = ""; _root.js2f_arg = "";
}
}
} Code: function mObject(mName){
if (navigator.appName.indexOf ("Microsoft") !=-1) return window[mName];
else return document[mName];
}
function js2f(obj,name,arg) {
mObject(obj).SetVariable("_root.js2f_function",name);
mObject(obj).SetVariable("_root.js2f_arg",arg);
} nun bettest du ein beliebiges flash-file in ein beliebiges html-file ein (zusammen mit den beiden dateien). hierbei darauf achten, dass das object und embed tag im html uebereinstimmende id- und name-parameter besitzen und dann kann es schon losgehen. kleines beispiel: HTML-Code: <script type="text/javascript" src="JS2F.js"></script> <object ... id="meinFilm"> <embed .. src="meinFilm.swf" name="meinFilm"></embed> </object> <a href="JavaScript:js2f('meinFilm','_root.meinTestObjekt.meineTestFunktion','test')"> klick mich</a> mfg, martin.
__________________ hmmm..... Geändert von japanitrat (22-11-2006 um 12:06 Uhr) |
| | |
| | #4 (permalink) | |
| n00b Registriert seit: Jun 2005
Beiträge: 271
|
hi Martin, sehr interessant. aber was meinst du mit Zitat:
kannst du ein einfache beisp. im as-code geben bitte? gruß phase
__________________ -- Don't eat yellow snow | |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Jan 2002 Ort: Umgebung Stuttgart
Beiträge: 5.412
|
hi, was japanitrat gepostet hat ist im Grunde genau das Gleiche, was falconry gemeint hat. Man muss Variablen übergeben, welche von einer "Listener Funktion" ständig abgefragt werden und je nach Inhalt der Variablen den weiteren Ablauf steuert. Die Listener Funktion bei japanitrat ist eine onEnterFrame Funktion welche eben ständig die Variablen abrägt. Ist also auch kein direkter Funktionsaufruf. Aber das WorkAround ist dennoch schön, da es einem einen gewissen Aufwand abnimmt.
__________________ Das Glück im Leben hängt von den guten Gedanken ab, die man hat. Easing_Equations / Flash Kontaktformular / FlashPlugin W3C konform / Nützliche Beiträge zu FAQs |
| | |
| | #6 (permalink) |
| relayit.de Registriert seit: Sep 2001
Beiträge: 427
|
phase: wie RK schon anmerkte, prueft die onEnterFrame-Funktion, ob ein wert gesetzt wurde. "sichtbar" heisst, dass der MovieClip aus der Library (dem die Klasse "JS2FHook" zugewiesen ist), in jedem Frame drin sein muss und _visible immer true sein muss, damit onEnterFrame auch wirklich immer aufgerufen wird. Dabei ist es voellig egal, ob du den MC ausserhalb deiner Stage platzierst oder innerhalb. Wichtig ist nur, dass er liegt und _visible = true ist (per default ist das auch so). und leider kann ich dir kein Beispiel mit as-code geben, da alles, was du tun musst, nichts mehr mit code zu tun hat. du legst die dateien einfach so an, wie ich das beschrieben hab (JS2FHook.as entweder in das gleiche Verzeichnis wie deine fla oder in ein verzeichnis, das in deinen Klassenpfaden definiert wurde). Dann erstellst du in der Library einen neuen MovieClip, gibst ihm ein beliebigen Namen und schreibst in den Eigenschaften (Erweitert bzw Verknüpfung) unter "AS 2.0-Klasse:" folgendes rein: "JS2FHook". Dann ziehst du diesen MovieClip irgendwo auf deine Stage (am besten oberstes level _root, eigene Ebene, ein Schluesselbild, was sich ueber die ganze laufzeit erstreckt) und dann laeuft das und du kannst jede funktion innerhalb deines swf's mit javascript aufrufen.
__________________ hmmm..... Geändert von japanitrat (01-04-2007 um 22:06 Uhr) |
| | |
| | #7 (permalink) | |
| n00b Registriert seit: Jun 2005
Beiträge: 271
| Zitat:
genau so hatte ich es gemacht aber leider klappt es nciht. ich habe folgendes im swf: Code: function testFunc(n){
_root.test_mc._x = n;
} mein html sieht so aus: Code: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>JS2F</title>
<script type="text/javascript" src="JS2F.js"></script>
</head>
<body bgcolor="#ffffff">
<!--Im Film verwendete URLs-->
<!--Im Film verwendeter Text-->
<!-- saved from url=(0013)about:internet -->
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="JS2F" align="middle" name="JS2F">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="JS2F.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="JS2F.swf" quality="high" bgcolor="#ffffff" width="550" height="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" id="JS2F" name="JS2F" />
</object>
<a href="javascript:js2f('JS2F','_root.testFunc','200')"> klick mich</a>
</body>
</html> gruß, phase
__________________ -- Don't eat yellow snow | |
| | |
| | #8 (permalink) |
| relayit.de Registriert seit: Sep 2001
Beiträge: 427
|
okay, also hab ich mich doch noch zu umstaendlich ausgedrueckt... zu deiner html-datei: die gleiche id doppelt zu benutzen (object und embed) ist nicht html-konform. das gleiche name zu benutzen fuehrt auch zu mehrdeutigkeiten. also einfach so machen, wie in dem beispiel: im object-tag id="x" im embed-tag name="x" okay?
__________________ hmmm..... Geändert von japanitrat (02-04-2007 um 20:44 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |