[FLASH MX] setMask() geeft Security Sandbox Violation error?

Pagina: 1
Acties:

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 18-01 18:46

XangadiX

trepanatie is zóó kinderachtig

Topicstarter
Ik heb een mooie dynamische functie geschreven die voor mij plaatjes inlaadt:

Flash ActionScript:
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
// fetch object and put it to target
function fetch(target, file, x, y, level, handler) {
    
    trace("fetching " add file add " and assign it to " add target);
    msg.text =  msg.text add "fetching " add file add " and assign it to " add target add "\n"
    
    this[target+"Listener"] = new Object();
    
    this[target+"Listener"].onLoadError = function(target_mc:MovieClip) {
        trace("### ERROR LOADING: " add file add " into " add target add " ###")
        msg.text = "ERROR:\n" add file add " was not loaded into " add target
    };
    
    this[target+"Listener"].onLoadStart = function(target_mc:MovieClip) {
        trace(file+": start loading")
        msg.text =  msg.text add  file+": start loading\n"
    };
    
    this[target+"Listener"].onLoadProgress  = function(target_mc:MovieClip, bytesLoaded, bytesTotal) { 
        trace( "loadprogress:" add bytesLoaded add " of " add bytesTotal )
    }
    
    this[target+"Listener"].onLoadComplete = function(target_mc:MovieClip) {
        trace(file+": loading complete!")
        msg.text =  msg.text add file+": loading complete!\n"
    };

    this[target+"Listener"].onLoadInit = function(target_mc:MovieClip) {
        trace(file+": ready... setting position: " add x add ", " add y add "\n")
        msg.text =  msg.text add "\n" add file+": ready... \nsetting position: " add x add ", " add y add "\ndone"
        
        target_mc._x = x
        target_mc._y = y
        
        _level0[handler]();
        
        
        this[target+"Listener"].removeListener(this[target+"Listener"])
    };
    
    createEmptyMovieClip(target, level)
    this[target+"_mcl"] = new MovieClipLoader();
    this[target+"_mcl"].addListener(this[target + "Listener"]);
    this[target+"_mcl"].loadClip(file, target)
}


goed, een beetje ruw rond de randjes, maar hij werkt perfect, inclusief een functie aanroep als hij klaar is met laden (de handler aan het eind van de functie).

Werkt perfect, en toen ik met een plaatje dat lokaal opgeslagen was werkte wilde het allemaal prima.
De handler riep een simpele functie aan die het plaatje maskeerde en dat was dat:

Flash ActionScript:
1
2
3
4
5
fetch("pic", "dame.jpg", 0, 0, 1, "setMask")

function setMask() {
    pic.setMask("mask")
}


geen probleem hier dus,

maar nu komt het: als ik het plaatje van een website aanroep dan geeft flash opeens een security sandbox error.

Flash ActionScript:
1
fetch("pic", "http://www.xangadix.net/public/beerwakkermaken.jpg", 0, 0, 1, "setMask")


geeft

code:
1
2
*** Security Sandbox Violation ***
SecurityDomain 'http://www.xangadix.net/public/beerwakkermaken.jpg' tried to access incompatible context 'file:///Q|/%5FActueel/ice%2Dmedia/image%2Dedit/test.swf'


Dat slaat nergens op; ik acces helemaal geen data van een ander domein; ik haal het naar mijn domein, feitelijk haal ik het zelfs clientside, en ik krijg een error. Er is denk ik wel omheen te werken maar ik vraag me af waarom? Ik heb op het net her en der mensen gevonden met dezelfde fout; maar niemand met een reden of een oplossing, ook macromedia niet.

wie heeft een idee?

de boel is te downloaden op http://www.xangadix.net/download/tweakers/ dan kun je het zelf ook proberen.

overigens heb ik hetzelfde probleem met een kale loadMovie, dus zonder de fetch functie

Stoer; Marduq


  • sanderb
  • Registratie: November 2000
  • Laatst online: 01:55
Ik heb ook heel wat gedonder gehad met die fijne zandbak...

Je kan een crossdomain policy plaatsen op je server, die alles accepteerd..
meer over crossdomain policy:
http://www.macromedia.com...gs_manager04a.html#119065

Je kan ook eerst proberen je eigen map waar je projecten staan toe te voegen in je settingsmanager:
http://www.macromedia.com.../settings_manager04a.html

" A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. " - Douglas Noel Adams


  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 18-01 18:46

XangadiX

trepanatie is zóó kinderachtig

Topicstarter
ja ik weet ook wel hoe ik het moet oplossen, maar ik vraag me alleen af waarom macromedia in al zijn wijsheid heeft besloten om de setMask() functie op te nemen in de zandbak...

Stoer; Marduq


  • sanderb
  • Registratie: November 2000
  • Laatst online: 01:55
heb het even getest en hij struikeld inderdaad over setMask :?
Het enige wat ik me kan voorstellen is dat het komt omdat het plaatje met MovieClipLoader.loadClip wordt ingeladen. Aangezien je daarmee ook een externe swf kan inladen zou ik me kunnen voorstellen dat ze daar inderdaad veiligheidsissues verwachten...maar dan nog..

Als je er perse vanaf wil zijn er natuurlijk wel oplossingen. Je zou een bitmapData object kunnen maken van het plaatje en deze clonen..en dan de clone gebruiken als mask. Op dat moment ben je alle referentie naar externe bestanden kwijt voor je setMask uitvoert, maar om nou zo'n oplossing te gaan uitvoeren...

Ik snap dat je niet op zoek bent naar oplossingen, maar het je gewoon afvraagt waarom die zandbak getriggerd wordt door de setMask functie....
Daar zou ik niet zo snel een antwoord op weten. Ben er ook wel nieuwsgierig naar.

" A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. " - Douglas Noel Adams