- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- problema fisheye menu as2
-
problema fisheye menu as2
Ciao a tutti, seguo spesso questo forum perchè lo trovo molto interessante, ma è la prima volta che scrivo.
Avrei bisogno della vostra competenza per risolvere un problema al quale non riesco proprio a venire a capo.Ho scaricato un bel fisheye menu in as 2, ho cambiato le immagini secondo le mie esigenze, ho convertito le stesse in pulsanti ma, purtroppo, non sono riuscita a renderle linkabili, perchè ogni volta che provo ad integrare la stringa di codice per il link, mi saltano fuori una marea di errori (ed è logico, dato che, purtroppo, sono proprio a livello base con gli as).
Di seguito vi riporto il codice as2:
/* * 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 = [ "image1", "image2", "image3", "image4", "image5", "image6", "image7" ]; // images var APP_WIDTH:Number = 692; // Width of this movieclip var APP_HEIGHT:Number = 350; // Height of this movieclip var MARGIN:Number = 0; // Margin between images var IMAGE_WIDTH:Number =90; // Image width var IMAGE_HEIGHT:Number = 233; // Image height var MAX_SCALE:Number = 1.5; // 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!
-
Ciao Ve benvenuta sul forum GT, se il menù è free puoi postare il link, così vedo se riesco a darti una mano.
-
Ciao Nhatan,
ti ringrazio molto per la tua risposta tempestiva.
ti mando il link in pm, perchè qua sul forum non me lo fa inserire, mi dice che non sono utente premium...
come vedi, le "voci di menu" di default non sono cliccabili, dato che sono immagini. Come detto prima, nell'esempio a cui sto lavorando, ho convertito le immagini in pulsanti per poterli poi linkare. Probabilmente è una cavolata per chi ne sa di actionscript, ma non ci salto mica fuori...
Grazie mille
-
Guarda puoi fare cosi: fai doppio click sul movieclip image1 in libreria cosi entri in modalita modifica del clip, ora trasforma in clip filmato la bitmap che hai sullo stage, dagli nome istanza ad esmpio "fl_btn" apri un nuovo livello e scrivi il
fl_btn.onRelease = function() { trace("ok") }
-
Ok, perfetto, fin qua ci sono e ho eseguito meticolosamente le tue istruzioni l'ultima cosa che volevo chiedere è: adesso come faccio ad integrare il codice:
on (release) { getURL(""); }
(ovviamente il link non lo inserisco sempre per il motivo che non sono ancora utente premium)
Posso inserirlo subito sotto a
fl_btn.onRelease = function() { trace("ok") }
?
Ti ringrazio ancora per la pazienza
-
Dunque, sei entrata nella time line del clip immagine1 e hai trasformato la bitmap in clip filmato, gli hai dato nome istanza "fl_btn" scrivendolo nell'apposito campo in finestra prorietà e hai creato un nuovo livello. Ora nel primo frame di questo nuovo livello devi scrivere il codice che non sarà nella forma on(release) che si mette sul bottone ma nella forma che si mette sui frame cioè
fl_btn.onRelease = function() { getURL("nome_pagina.html") }
-
Perfetto! funziona alla perferzione! Grazie mille, sei stato gentilissimo!