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]