I can see the red line now! :) The security error shows up when computeSpectrum is called. I found this:
"the Error #2121 happens when you try to call the computeSpectrum function when another flash file with sound is loaded from a different domain. For example, if you have youtube open when trying to view a flash file that uses computeSpectrum, it will fail because youtube did not grant your domain access to get its sound info.... It appears the only "solution" is to put your computeSpectrum in a try/catch block (or use areSoundsInaccessable method before calling computeSpectrum ) and simply notify the user that a flash file in a different window is interfering with your sound visualizations!" But I'm not using flash in any window :( On Sun, Mar 21, 2010 at 9:46 AM, Henry Minsky <[email protected]> wrote: > I tried to compile and run your example, as follows, and it ran without > error for me. It displayed a red line > > <canvas> > <class name="spectrum" extends="view"> > <passthrough> > import flash.display.Sprite; > import flash.display.StageAlign; > import flash.display.StageScaleMode; > import flash.events.*; > import flash.media.Sound; > import flash.media.SoundChannel; > import flash.media.SoundMixer; > import flash.media.SoundTransform; > import flash.net.URLRequest; > import flash.utils.Timer; > import flash.geom.Matrix; > import flash.utils.ByteArray; > import flash.text.TextField; > import flash.text.TextFieldAutoSize; > import flash.text.TextFormat; > </passthrough> > > <attribute name="_ba" value="null"/> > <attribute name="_gr" value="null"/> > <method name="init"><![CDATA[ > this._ba = new ByteArray(); > this._gr = new Sprite(); > this._gr.x = 20; > this._gr.y = 200; > > canvas.sprite.addChild(this._gr); > > var time:Timer = new Timer(50); > > time.addEventListener(TimerEvent.TIMER, timerHandler); > time.start(); > ]]> > </method> > > <method name="timerHandler" args="e:Event"><![CDATA[ > > var ba:ByteArray = this._ba; > var gr:Sprite = this._gr; > > SoundMixer.computeSpectrum(ba, true); > var i:int; > gr.graphics.clear(); > gr.graphics.lineStyle(0, 0xFF0000); > gr.graphics.beginFill(0xFF0000); > gr.graphics.moveTo(0, 0); > var w:int = 2; > for (i=0; i<512; i+=w) { > var t:Number = ba.readFloat(); > var n:Number = (t * 100); > gr.graphics.drawRect(i, 0, w, -n); > } > ]]> > </method> > </class> > <spectrum/> > > </canvas> > > Do you have the Flash player installed? > Try running either in backtrace mode or without debugging enabled, and see > if you can > get more information about where the errors is coming from. In backtrace > mode, you can click on the error to inspect it. In non-debug mode, the Flash > debug player will give you a native Flash backtrace. > > > On Sun, Mar 21, 2010 at 8:38 AM, Lucas Lain <[email protected]> wrote: >> >> Hello Henry, >> >> Thank you for your answer. I modified the code and I can compile now. >> >> But I can't see the sprite, and I'm getting a runtime error: >> >> ERROR @spectrum.lzx≈46: SecurityError: Error #2123 >> >> Any Ideas? Could you use this class? >> >> Best! >> >> L. >> >> >> On Sun, Mar 21, 2010 at 1:47 AM, Henry Minsky <[email protected]> >> wrote: >> > Also you will need an extra arg to your handler method >> > >> > <method name="timerHandler" args="e:Event"> >> > >> > Because the contract for a AS3 event listener is that it needs to accept >> > one >> > argument. >> > >> > "This function must accept an Event object as its only parameter and >> > must >> > return nothing" >> > >> > >> > >> > >> > On Sat, Mar 20, 2010 at 11:39 PM, Henry Minsky <[email protected]> >> > wrote: >> >> >> >> To get the sprite, just "canvas.sprite" ought to work, although the >> >> cross >> >> platform API to get the sprite is canvas.getDisplayObject() >> >> >> >> >> >> >> >> On Sat, Mar 20, 2010 at 5:21 PM, Lucas Lain <[email protected]> >> >> wrote: >> >>> >> >>> Hello everybody, >> >>> >> >>> does anyone know how to add a sprite to an openlaszlo canvas or view? >> >>> >> >>> I wrote/modified the attached class to visualize the sound spectrum. >> >>> >> >>> This line is the one supposed to do the trick: >> >>> >> >>> canvas.content.sprite.addChild(this._gr); >> >>> >> >>> >> >>> Best! >> >>> >> >>> >> >>> -- >> >>> Lucas >> >> >> >> >> >> >> >> -- >> >> Henry Minsky >> >> Software Architect >> >> [email protected] >> >> >> >> >> > >> > >> > >> > -- >> > Henry Minsky >> > Software Architect >> > [email protected] >> > >> > >> > >> >> >> >> -- >> Lucas > > > > -- > Henry Minsky > Software Architect > [email protected] > > > -- Lucas
