My first guess is you're running into the local sandbox issue.  I have the same 
issue with md2 models if I don't embed them.

I'd suggest uploading the whole mess to a webserver, removing the faces from 
the filename, and barring that, I'd embed the mp3.

Have you tried loading it in the Debug flash player?
~ C



On 2010-01-13, at 4:32 AM, metSyS wrote:

> it wirks only if run it in the Flex. if copy : image, track and swf to
> another place visualisation doesn't work. Why?
> 
> package
> {
>       import away3d.cameras.HoverCamera3D;
>       import away3d.containers.View3D;
>       import away3d.containers.Scene3D;
>       import away3d.materials.BitmapMaterial;
>       import away3d.materials.ColorMaterial;
>       import away3d.primitives.Cube;
>       import away3d.primitives.RegularPolygon;
>       import away3d.primitives.Trident;
>       import away3d.core.utils.Cast;
> 
>       import flash.display.Bitmap;
>       import flash.display.Sprite;
>       import flash.events.Event;
>       import flash.events.MouseEvent;
>       import flash.filters.BlurFilter;
>       import flash.media.Sound;
>       import flash.media.SoundChannel;
>       import flash.media.SoundMixer;
>       import flash.net.URLRequest;
>       import flash.utils.ByteArray;
>       import flash.utils.Timer;
> 
>       [SWF(width="1024", height="768", frameRate="30",
> backgroundColor="#ffffff")]
>       public class music extends Sprite
>       {
>               private var cam:HoverCamera3D;
>               private var lastKey:uint;
>               private var keyIsDown:Boolean = false;
>               private var view:View3D;
> 
>               private var numCubes:Number=16; // Set depending on speed of
> computer. adjust amplitude accordingly
>               private var amplitude:Number=70;
>               private var cubes:Array;
>               private var cubesMirrored:Array;
>               private var cubeColors:Array;
>               private var mp3:Sound;
>               private var soundBytes:ByteArray;
>               private var soundPlaying:Boolean=false;
>               private var soundValues:Array;
>               private var pausePosition:int=0;
>               private var channel:SoundChannel;
>               private var highlightFilter:Array;
>               private var maxLev:Number=0;
> 
>               private var t:Timer;
> 
>               private var url:String='track.mp3';
>               private var scene:Scene3D;
> 
>               //camera----------------
>               private var lastMouseX:Number;
>               private var lastMouseY:Number;
>               private var lastPanAngle:Number;
>               private var lastTiltAngle:Number;
>               private var move:Boolean = false;
>               //camera----------------
> 
>               [Embed (source="01.jpg")]
>               private var greyTexture:Class;
> 
>               public function music()
>               {
>                       scene=new Scene3D();
> 
>                       // init objects
>                       cubes=new Array();
>                       cubesMirrored=new Array();
>                       cubeColors=new Array();
>                       soundBytes=new ByteArray();
>                       soundValues=new Array();
> 
>                       // setup and load mp3
>                       mp3=new Sound(new URLRequest(url));
>                       //mp3.load(new URLRequest("02 Bear Trap.mp3")); // 
> Note: you will
> have to change this to point to one of your own mp3 files
>                       channel=new SoundChannel();
> 
>                       // prefill arrays with zero's
>                       for(var p:int=0; p<numCubes; p++){
>                               soundValues.push(0);
>                               cubeColors.push(0);
>                       }
> 
>                       // create a "hovering" camera
>                       cam=new HoverCamera3D();
>                       cam.z=-1000; // make sure the camera is positioned away 
> from the
> default 0,0,0 coordinate
>                       cam.panangle=20;
>                       cam.tiltangle=20;
>                       cam.targetpanangle=20;
>                       cam.targettiltangle=20;
>                       cam.mintiltangle=-90;
>                       cam.zoom=16;
> 
>                       // create a viewport
>                       view = new View3D({scene:scene, camera:cam, 
> x:stage.stageWidth/2,
> y:stage.stageHeight/2});
>                       addChild(view);
> 
>                       // Show the axis
>                       var axis:Trident=new Trident(150);
>                       view.scene.addChild(axis);
> 
>                       // Create and place the cubes
>                       var i:int; var zPos:int;
>                       for(i=0; i<numCubes; i++){
>                               // position left/right channle cubes differently
>                               if(i<(numCubes/2)){
>                                       zPos = 15;
>                               } else {
>                                       zPos = -15;
>                               }
> 
>                               // add positive value cubes
>                               var 
> xPos:Number=(i%(numCubes/2)*30)-(((numCubes/2)*30)/2)+15;
>                               var cubeMaterial:ColorMaterial=new 
> ColorMaterial(0xffffff);
>                               var cube:Cube=new 
> Cube({material:cubeMaterial,width:20,height:
> 1,depth:20,x:xPos,z:zPos,y:5,ownCanvas:true});
>                               view.scene.addChild(cube);
>                               cubes[i]=cube;
> 
>                               // add the "reflection" cubes
>                               var cubeMaterialM:ColorMaterial=new 
> ColorMaterial(0xffffff);
>                               var cubeM:Cube=new 
> Cube({material:cubeMaterialM,width:20,height:
> 1,depth:20,x:xPos,z:zPos,y:-5,alpha:1,ownCanvas:true});
>                               view.scene.addChild(cubeM);
>                               cubesMirrored[i]=cubeM;
>                       }
> 
>                       // Add a textured plane
>                       var planeMat:BitmapMaterial=new 
> BitmapMaterial(Cast.bitmap
> (greyTexture), {alpha:0.5});
>                       var plane:RegularPolygon = new 
> RegularPolygon({material:planeMat,
> radius:500, sides:4, ownCanvas:true});
>                       plane.ownCanvas=true;
>                       view.scene.addChild(plane);
> 
>                       // Create a filter for blurring cubes that get new 
> values
>                       highlightFilter=new Array(new BlurFilter());
> 
>                       // update the view so the cover has something to display
>                       cam.hover();
>                       view.render();
> 
>                       // listen for key events and run every frame
>                       addEventListener(Event.ENTER_FRAME, onEnterFrame);
> 
>                       // listen for events from the Cover
>                       addEventListener(Event.ACTIVATE, playSound);
>                       addEventListener(Event.DEACTIVATE, stopSound);
> 
>                       //camera--------------
>                       stage.addEventListener(MouseEvent.MOUSE_DOWN, 
> MouseDown);
>                       stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp);
>                       //camera--------------
>               }
> 
>               private function onEnterFrame(e:Event):void
>               {
>                               // Grab and set up sound values
>                               SoundMixer.computeSpectrum(soundBytes,true);
>                               var tempValue:Number=0;
>                               var newValues:Array=new Array();
>                               var 
> valuesToMerge:Number=Math.floor(512/numCubes);
>                               var i:uint;
> 
>                               // grab volume averages from 512 samples for 
> use with X cubes
>                               for (i=0; i<512; i++) {
>                                       // read out levels from byteArray
>                                       var lev:Number = soundBytes.readFloat() 
> * amplitude;
>                                       tempValue += lev;
>                                       // create average so we only get 
> "numCubes" of values
>                                       if(i%valuesToMerge == valuesToMerge-1){
>                                               var avg:Number = 
> tempValue/numCubes;
>                                               newValues.push(avg);
>                                               tempValue = 0;
>                                       }
>                               }
> 
>                               // update cubes
>                               var l:int = newValues.length;
>                               var newSoundValues:Array = new Array();
>                               for (i = 0; i < l; i++) {
>                                       var currentCube:Cube = cubes[i] as Cube;
>                                       var currentCubeMirror:Cube = 
> cubesMirrored[i] as Cube;
>                                       // if the values is higher than the 
> previous one, go white
>                                       if(newValues[i] > soundValues[i]){
>                                               newSoundValues[i] = 
> newValues[i];
>                                               cubeColors[i] = 128;
>                                               currentCube.filters = 
> highlightFilter;
>                                               currentCubeMirror.filters = 
> highlightFilter;
>                                       } else { // If lower, just keep fading
>                                               var dampedValue:Number = 
> soundValues[i]-3;
>                                               if(dampedValue<1){ dampedValue 
> = 1; }
>                                               cubeColors[i] -= 10;
>                                               newSoundValues[i] = dampedValue;
>                                               currentCube.filters = null;
>                                               currentCubeMirror.filters = 
> null;
>                                       }
>                                       // Adjust cube and mirror cube height
>                                       currentCube.height = newSoundValues[i];
>                                       currentCube.y = newSoundValues[i]/2;
>                                       currentCubeMirror.height = 
> newSoundValues[i];
>                                       currentCubeMirror.y = 
> newSoundValues[i]/2*-1;
> 
>                                       // Adjust color
>                                       var adjustedColor:uint = cubeColors[i];
>                                       var colString:String;
>                                       var colStringMirror:String;
>                                       var increase:Number = 1.7; // how much 
> whiter shall the
> "reflected" cubes be
>                                       if(i<l/2){ // First X cubes are blue
>                                               colString = 
> "0x"+ensureTwoDigits(adjustedColor)+ensureTwoDigits
> (adjustedColor)+"ff";
>                                               colStringMirror = 
> "0x"+ensureTwoDigits(adjustedColor*increase)
> +ensureTwoDigits(adjustedColor*increase)+"ff";
>                                       } else { // Next X cubes are red
>                                               colString = 
> "0xff"+ensureTwoDigits(adjustedColor)+ensureTwoDigits
> (adjustedColor);
>                                               colStringMirror = 
> "0xff"+ensureTwoDigits(adjustedColor*increase)
> +ensureTwoDigits(adjustedColor*increase);
>                                       }
> 
>                                       // Read out and update the material
>                                       var col:ColorMaterial = 
> currentCube.material as ColorMaterial;
>                                       var colM:ColorMaterial = 
> currentCubeMirror.material as
> ColorMaterial;
>                                       col.color = uint(colString);
>                                       colM.color = uint(colStringMirror);
>                               }
> 
>                               // update soundValues with new values
>                               soundValues = newSoundValues.concat();
> 
>                               // rotate the camera around the cubes
>                               //cam.targetpanangle += .5;
> 
>                               //camera------------------
>                               var cameraSpeed:Number = 0.3; // Approximately 
> same speed as mouse
> movement.
>                               if (move)
>                               {
>                                       cam.targetpanangle = 
> cameraSpeed*(stage.mouseX - lastMouseX) +
> lastPanAngle;
>                                       cam.targettiltangle = 
> cameraSpeed*(stage.mouseY - lastMouseY) +
> lastTiltAngle;
>                               }
>                               //camera------------------
> 
>                               // render the view
>                               cam.hover();
>                               view.render();
>               }
> 
>               // Clamp and adjust HEX values. Make sure the HEX has an initial
> zero (if required)
>               private function ensureTwoDigits(n:uint):String{
>                       var s:String;
>                       if(n > 255){ n = 255;}
>                       if(n < 1){ n = 1;}
>                       if(n < 16){
>                               s = "0"+n.toString(16);
>                       } else {
>                               s = n.toString(16);
>                       }
>                       return s;
>               }
> 
>               // Sound events triggered by the cover
>               private function playSound(e:Event):void
>               {
>                       if(!soundPlaying){
>                               soundPlaying = true;
>                               channel = mp3.play(pausePosition);
>                               if( 
> !channel.hasEventListener(Event.SOUND_COMPLETE) ){
>                                       
> channel.addEventListener(Event.SOUND_COMPLETE,
> soundCompleteHandler);
>                               }
>                       }
>               }
> 
>               private function stopSound(e:Event):void
>               {
>                       pausePosition = channel.position;
>                       channel.stop();
>                       soundPlaying = false;
>               }
> 
>               // restart the mp3 when finished playing
>               private function soundCompleteHandler(e:Event):void
>               {
>                       pausePosition = 0;
>                       soundPlaying = false;
>                       playSound(e);
>               }
> 
>               //camera-------------
>               private function MouseDown(event:MouseEvent):void
>               {
>                       lastPanAngle = cam.targetpanangle;
>                       lastTiltAngle = cam.targettiltangle;
>                       lastMouseX = stage.mouseX;
>                       lastMouseY = stage.mouseY;
>                       move = true;
>               }
> 
>               private function MouseUp(event:MouseEvent):void
>               {
>                       move = false;
>               }
>               //camera-------------
>       }
> }

Reply via email to