- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- Problema con fisheye menu
-
Problema con fisheye menu
Ciao a tutti, ho un problema (probabilmente stupidissimo), ma che per me sembra quasi insormontabile, data la mia (purtroppo) scarsa dimestichezza con flash.
Sto sistemando un menu fisheye preso da un sito (se vi serve il link ve lo mando in pm, perchè non posso ancora linkare), tutto ok fino a quando non supero il numero di simboli che ci sono nel file da modificare.
Premetto, che i simboli da visualizzare, vengono richiamati tramite action script.
I simboli in questione sono 7, io però devo aggiungerne due in più e questo mi crea qualche problema, perchè appena aggiungo un'ottavo simbolo (creato da zero), questo non mi viene visualizzato nell'animazione finale. La cosa curiosa è che, se invece io nel codice richiamo due volte uno degli altri, si aggiunge tranquillamente un simbolo in più. Volevo quindi sapere, se c'è un'anima pia che riesce a spiegarmi dove sbaglio.Allego il codice as2 e, se vi serve, vi mando il file zippato in pm
/* * A Fish Eye Menu in Actionscript 2 * converted by James Ford * * based on A Fish Eye Menu in Actionscript 3 * from shinedraw.com */ var IMAGES:Array = [ "image2", "image4", "image6", "image1", "image3", "image5", "image7", "image8" ]; // images var APP_WIDTH : Number = 670; // Width of this movieclip var APP_HEIGHT : Number = 212; // Height of this movieclip var MARGIN:Number = 0; // Margin between images var IMAGE_WIDTH: Number = 95; // Image width var IMAGE_HEIGHT : Number = 181; // Image height var MAX_SCALE:Number = 1.4; // Max scale var MULTIPLIER:Number = 60; // Control the effectiveness of the mouse var _images : Array = new Array(); // Store the added images ///////////////////////////////////////////////////// // Handlers ///////////////////////////////////////////////////// function on_added_to_stage():Void{ // add the images to the stage addImages(); // start the mouse event handler //stage.addEventListener(MouseEvent.MOUSE_MOVE, on_mouse_move); } // because we've got no document class, we need // to start things in a more simple way on_added_to_stage() // mouse event handler //function on_mouse_move():Void{ this.onMouseMove = function():Void { //trace("on_mouse_move") for(var i:Number = 0 ; i < _images.length; i++){ var image : MovieClip = _images* //as MovieClip; // compute the scale of each image according to the mouse position var imageScale:Number = MAX_SCALE - Math.min(MAX_SCALE - 1, Math.abs(this._xmouse - (image._x + image._width / 2)) / MULTIPLIER); // resize the image resizeImage(image, IMAGE_WIDTH * imageScale, IMAGE_HEIGHT * imageScale, i, IMAGES.length); } // sort the children according to the _yscale sortChildren(this, "_yscale"); } ///////////////////////////////////////////////////// // Public Methods ///////////////////////////////////////////////////// ///////////////////////////////////////////////////// // Private Methods ///////////////////////////////////////////////////// // add the images to the stage function addImages():Void{ for(var i:Number = 0; i < IMAGES.length; i++){ // we can't attach bitmaps in AS2 like we do in AS3, so the bitmaps have been // converted to movieclips and attached that way var imageClass : String = IMAGES*; var image : MovieClip = this.attachMovie(imageClass, imageClass, this.getNextHighestDepth()) image.cacheAsBitmap = true; // resize the image resizeImage(image, IMAGE_WIDTH, IMAGE_HEIGHT, i, IMAGES.length); _images.push(image); } } // resize the image function resizeImage(image : MovieClip, imageWidth:Number, imageHeight:Number, index:Number, total : Number):Void{ image._width = imageWidth; image._height = imageHeight; image._y = APP_HEIGHT/2 - image._height/2; image._x = APP_WIDTH/ 2 + (index - (total - 1) / 2) * (MARGIN + IMAGE_WIDTH) - image._width / 2; } // Sort the objects according to the image width function sortChildren(container, criteria:String) : Void { var _numChildren:Number = IMAGES.length//container._numChildren; //no need to sort (zero or one child) if( _numChildren < 2 ) return ; //create an Array to sort children var children:Array = new Array( _numChildren ); var i:Number = -1; while( ++i < _numChildren ) { children[ i ] = {mc:container.getInstanceAtDepth( i ), num:container.getInstanceAtDepth( i )._yscale}; } //sort by children by the criteria children.sortOn( "num", Array.NUMERIC ); var child : MovieClip; i = -1; while( ++i < children.length ) { child = MovieClip( children[ i ].mc ); //only set new depth if necessary if( i != container.getInstanceAtDepth(i) ) { //set their new position child.swapDepths(container.getInstanceAtDepth(i)) } } } ```Grazie mille in anticipo
-
Hai fatto il Concatenamento del nuovo simbolo?
-
Ciao Nhatan, e grazie per avermi risposto. Il menu è in as2 (ho preso questo, perchè di as3 ne capisco ancora meno ). Ecco, forse è proprio quello che mi sfugge: come faccio a fare il concatenamento? Io ho cercato di ricreare il simbolo seguendo lo stesso sistema di quelli già presenti: ho creato il nuovo simbolo image8, in cui ho inserito l'altro nuovo simbolo fl_btn8, se vuoi posso mandarti in pm il file zippato, così riesci a capire meglio quanto detto (perchè, mi rendo conto che detto così non si capisce poi granché).
Grazie ancora
-
Per fare il concatenamento tasto destro sul simbolo in libreria voce concatenamento spunta il cek esporta per actionscript.
-
Grazie mille Nhatan, sono riuscita ad aggiungere il simbolo in più! Sei stato molto gentile
-
Di niente ciao.