[flash] interactie met ingeladen swf

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • samvdheijden
  • Registratie: September 2010
  • Laatst online: 18-08 13:30
Ik zit met een probleem. Ik probeer een interactieve kaart te maken waarin de kaart via een externe swf wordt ingeladen in een container. In de swf van de kaart komen een aantal movieclips met icoontjes waarvan ik via buttons, welke niet in de externe swf staan, de visibility wil veranderen (zodat ze wel/niet te zien zijn).

Nu kom ik er maar niet achter hoe ik de movieclips in de extern ingelade swf aanroep vanuit mijn 'main movie'.

Dit is de code welke ik tot nu toe gebruik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
var bleh:Number = .1;
var zoom:Number = 1;
var scale:Number;


//Loader
var my_Loader:Loader = new Loader();
var mcExt:MovieClip; 

my_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoading);
my_Loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

my_Loader.load(new URLRequest("route.swf")); 

function finishLoading(loadEvent:Event) {
    mcExt = MovieClip(my_Loader.contentLoaderInfo.content);
    my_Loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, finishLoading);
    mcExt.x = 0;
    mcExt.y = 0;
    map.addChild(mcExt); 
}

function errorHandler(errorEvent:Event):void {
    trace("file missing");
}


//Dragfunctie
map.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) 

function mouseDown(event:MouseEvent):void {
    map.startDrag();
}
map.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);

function mouseReleased(event:MouseEvent):void {
    map.stopDrag();
}


//Zoomfunctie
stage.addEventListener(MouseEvent.MOUSE_WHEEL,WH,false,0,true);

function WH(e:MouseEvent):void

    {
        scale = (map.scaleX + e.delta * bleh);
        
        if (e.delta >= 2 && zoom <=25){
            zoom++
        }
        if (e.delta <= 1 && zoom >=1){
            zoom--;
        }
        if (scale >= 1 && scale <= 8.2){
            map.scaleX = scale;
            map.scaleY = scale;
        }
        if (scale <= 1){
            scale = 1;
        }
        if (scale >= 8.2){
            scale = 8.2;
        }
}


btn_huis.addEventListener(MouseEvent.CLICK, clickhuis);

function clickhuis(evt:MouseEvent):void {
    mcExt.icoontjes.visible = false;
}


De loader laad de swf in een variable welke (volgens een tutorial op het i-net) dan weer gebruikt zou kunnen worden om de movieclips in de swf aan te roepen. map is de container waar de kaart in wordt geladen.

Maar wanneer ik nu op mijn button "clickhuis" klik krijg ik de volgende error:
code:
1
2
ReferenceError: Error #1069: Property icoontjes not found on route_fla.MainTimeline__Preloader__ and there is no default value.
    at kaart1_fla::MainTimeline/clickhuis()


Dit krijg ik overigens ook wanneer ik de loader aanpas dat hij de swf niet in een variable laad maar gewoon direct in de container.

Heeft iemand enig idee hoe dit gedaan kan worden? Alvast bedankt!

Acties:
  • 0 Henk 'm!

Verwijderd

External Interface al gevonden?

Acties:
  • 0 Henk 'm!

  • ath92
  • Registratie: Augustus 2007
  • Laatst online: 03-05 10:34
External interface is voor zover ik weet een functie om via JavaScript een Swf te benaderen. Ik denk (ben dus niet geheel zeker) dat je dit probleem kunt oplossen door de "getChildByName(child_name)" functie te gebruiken. Dat zou dus neerkomen op zoiets:

code:
1
2
3
4
5
btn_huis.addEventListener(MouseEvent.CLICK, clickhuis);

function clickhuis(evt:MouseEvent):void {
    mcExt.getChildByName("icoontjes").visible = false;
}

Acties:
  • 0 Henk 'm!

  • samvdheijden
  • Registratie: September 2010
  • Laatst online: 18-08 13:30
Bedankt voor de reacties! Ik ga het morgen wanneer ik weer bij de fla. kan eens proberen. Als ik er google eens op nalees zou het heel goed nog eens kunnen werken!

I'll keep it posted ;)