Foros del Web » Creando para Internet » Flash y Actionscript »

Error 1006: value no es una función

Estas en el tema de Error 1006: value no es una función en el foro de Flash y Actionscript en Foros del Web. Hola, me da el siguiente error cuando compilo y hago click sobre un botón: Código: TypeError: Error #1006: change_page no es una función. at prueba_fla::allpages_13/subbtn_click() ...
  #1 (permalink)  
Antiguo 01/12/2009, 18:07
 
Fecha de Ingreso: julio-2009
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 0
De acuerdo Error 1006: value no es una función

Hola, me da el siguiente error cuando compilo y hago click sobre un botón:
Código:
TypeError: Error #1006: change_page no es una función.
	at prueba_fla::allpages_13/subbtn_click()


Tengo definida la funcion change_page en un fotograma clave vació en la escena. No está dentro de ningun movie clip ni nada por el estilo.

Esta es la función:
Código:
function change_page(no:Number):void
{
	for( var i:Number = 0; i < main_menu.numChildren; i++ )
	{
		var mc = MovieClip( main_menu.getChildAt(i) );
		mc.over = false;
		mc.flashmo_click_area.visible = true;
		mc.addEventListener( MouseEvent.ROLL_OVER, btn_over );
		mc.addEventListener( MouseEvent.ROLL_OUT, btn_out );
		mc.addEventListener( MouseEvent.CLICK, btn_click );
	}
	var mc_selected = MovieClip( main_menu.getChildAt(no) );
		mc_selected.over = true;
		mc_selected.flashmo_click_area.visible = false;
		mc_selected.removeEventListener( MouseEvent.ROLL_OVER, btn_over );
		mc_selected.removeEventListener( MouseEvent.ROLL_OUT, btn_out );
		mc_selected.removeEventListener( MouseEvent.CLICK, btn_click );

	page = no + 1;
	play();
}


Luego, dentro de un movieclip y en un fotograma clave vació estoy llamando a la función change_page, con el siguiente código:

Código:
boton_empresasasociadas.addEventListener( MouseEvent.CLICK, subbtn_click );

function subbtn_click(e:MouseEvent):void
{
this.change_page(5);
}
No entiendo porque el error, ya que me dice que no es una función, y si lo es.

Por favor ayudenme y desde ya muchas gracias.
  #2 (permalink)  
Antiguo 01/12/2009, 21:26
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Error 1006: value no es una función

hola
bueno, trata cambiando this.change_page(5); por solo change_page(5); o por _root.change_page(5);
si persiste el inconveniente, pasa la función subbtn_click al mismo sitio donde esta change_page y reintenta
saludos
  #3 (permalink)  
Antiguo 02/12/2009, 09:01
 
Fecha de Ingreso: julio-2009
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Error 1006: value no es una función

hola, gracias por contestar.
Mira, si pongo solo change_page dice que no existe, si pongo _root.change_page tampoco funciona. Probé poniendo la función subbtn_click en el mismo sitio de change_page, y cambié esto:
Código:
boton_empresasasociadas.addEventListener( MouseEvent.CLICK, subbtn_click );
por
boton_empresasasociadas.addEventListener( MouseEvent.CLICK, this.subbtn_click );
Me da otro error:
Código:
TypeError: Error #2007: El valor del parámetro listener debe ser distinto de null.
	at flash.events::EventDispatcher/addEventListener()
	at prueba_fla::allpages_13/prueba_fla::frame2()
Salu2s, dame tu msn porfavor para que me ayudes. Gracias
  #4 (permalink)  
Antiguo 03/12/2009, 11:56
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Error 1006: value no es una función

Hola
ha bueno, este error te lo da porque no estas capturando el evento en la función

cambia tu función así

function change_page(e:MouseEvent):void

para que capture el tipo mouseevent, y has la prueba
nos comentas
saludos
  #5 (permalink)  
Antiguo 06/12/2009, 16:38
 
Fecha de Ingreso: julio-2009
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Error 1006: value no es una función

como pongo:
function change_page(e:MouseEvent):void

si tengo:
function change_page(no:Number):void


no lo puedo reemplazar

saludos
  #6 (permalink)  
Antiguo 06/12/2009, 18:14
Avatar de Eskombro  
Fecha de Ingreso: septiembre-2009
Ubicación: Colombia
Mensajes: 437
Antigüedad: 14 años, 7 meses
Puntos: 22
Respuesta: Error 1006: value no es una función

Pues en realidad es extraño. Si quieres probar lo que dice mortiprogramador, puedes reemplazar el no:Number de forma muy sencilla. Si no estoy mal, ese no es una variable que te indica el número de página actual, para saber a qué página pasar, o a qué fotograma ir. Puedes reemplazarlo por un valor dentro de la función que podría adoptarse, por ejemplo del currentFrame...

Un saludo
Eskombro
__________________
Blog AS3 Ideas -> Programación en ActionScript 3
________
Esk Games | Free online flash games
  #7 (permalink)  
Antiguo 05/05/2010, 05:45
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Error 1006: value no es una función

Hola!
A mi también me da el dichoso error y no se porque.
El código es el siguiente:

Casilla

Código:
public function dibujarCasilla(horizontal:int, vertical:int,x:int,y:int) {
			var s:Sprite = new Sprite ();
			s.graphics.beginFill(0xC0C0C0);
			s.graphics.lineStyle(2,0x800080);
			s.graphics.drawRect(horizontal,vertical,x,y);
			this.addChild(s);
		}

Y llamo a esta funcion desde aquí:

Crear_tablero


Código:
horizontal=200;
vertical=-50;
var casAux:Casilla;
for (var j:int=0; j<7; j++) {
	for (var i:int=0; i<5; i++) {
		casAux= new Casilla(false,false,false);
		casAux.dibujarCasilla(horizontal,vertical,20,20);
		horizontal+=20;
	}
	vertical+=20;
	horizontal=200;
}

Ya he probado a hacer lo que pusisteis de quitar lo de this en el addchild y lo de ponerle _root por delante pero no funciona, me dice que así no está definido.

El error que me pone exactamente es este:


TypeError: Error #1006: addChild no es una función.
at Casilla/dibujarCasilla()
at crearTablero_fla::MainTimeline/frame1()


LLevo días atascada aquí y no se como seguir, espeor que alguien me pueda ayudar.
Muchisimas gracias de antemano

Última edición por andmai; 05/05/2010 a las 07:56
  #8 (permalink)  
Antiguo 05/05/2010, 07:58
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Error 1006: value no es una función

utiliza parent por que si lo pones dentro de un fotograma en la escena principal esta en el root o nivel superior las funciones que hay dentro de un mc se encuentran en un contendedor de diferente nivel

utilizando como ejemplo el problema planteado por mihd la solucion es la siguiente

Código PHP:
boton_empresasasociadas.addEventListenerMouseEvent.CLICKsubbtn_click );

function 
subbtn_click(e:MouseEvent):void
{
this.parent.change_page(5);


O

Código PHP:
boton_empresasasociadas.addEventListenerMouseEvent.CLICKsubbtn_click );

function 
subbtn_click(e:MouseEvent):void
{
var 
miRoot:*=root
miRoot
.change_page(5);

__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #9 (permalink)  
Antiguo 05/05/2010, 08:08
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Error 1006: value no es una función

Muchas gracias Lynxcraft, pero me sigue dando error. Si utilizo la 1º opción me da el siguiente error:
TypeError: Error #1010: Un término no está definido y no tiene propiedades.

Y si utilizo la 2º este otro:
1120: Acceso a una propiedad root no definida.

Puede ser que el addchild haya que definirlo de otra manera o algo por el estilo? es que ya no se que pensar...
Muchas gracias
  #10 (permalink)  
Antiguo 05/05/2010, 08:10
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Error 1006: value no es una función

Esto es para andmai

primero la utilización de clases como sabrás se registran en archivos externos con extensión .as pues bien guarda esto en un archivo llamado Casilla.as junto el fla de ejemplo

Código PHP:
package {
    
import flash.display.*;
    public class 
Casilla extends Sprite {
        public function 
Casilla():void{
        
    }
        public function 
dibujarCasilla(horizontal:int=100vertical:int=100,x:int=100,y:int=100) {
            var 
s:Sprite = new Sprite ();
            
s.graphics.beginFill(0xC0C0C0);
            
s.graphics.lineStyle(2,0x800080);
            
s.graphics.drawRect(horizontal,vertical,x,y);
            
this.addChild(s);
        }
    }

en el flash de ejemplo tienes que poner lo siguiente en el primer fotograma
Código PHP:
import Casilla

var horizontal=200;
var 
vertical=-50;

for (var 
j:int=0j<7j++) {
    for (var 
i:int=0i<5i++) {
        var 
casAux= new Casilla();
        
casAux.dibujarCasilla(horizontal,vertical,20,20);
        
addChild(casAux)
        
horizontal+=20;
    }
    
vertical+=20;
    
horizontal=200;

__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #11 (permalink)  
Antiguo 05/05/2010, 08:40
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
De acuerdo Respuesta: Error 1006: value no es una función

Muchas gracias
Me falta poner el extends Sprite en el .as y el addChild en el .fla

Muchisimas gracias de verdad
  #12 (permalink)  
Antiguo 05/05/2010, 08:46
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Error 1006: value no es una función

de nada XDXD
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:45.