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

Error, no puedo llamar una función

Estas en el tema de Error, no puedo llamar una función en el foro de Flash y Actionscript en Foros del Web. Tengo un problema, no puedo llamar a una función... Código: <?xml version="1.0"?> <!-- DataGrid control example. --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ private function modificarTexto():void { ...
  #1 (permalink)  
Antiguo 13/04/2008, 07:54
 
Fecha de Ingreso: octubre-2003
Mensajes: 208
Antigüedad: 20 años, 6 meses
Puntos: 0
Error, no puedo llamar una función

Tengo un problema, no puedo llamar a una función...

Código:
<?xml version="1.0"?>
<!-- DataGrid control example. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Script>
		<![CDATA[
			private function modificarTexto():void 
           {
            textos.text+= dg.selectedItem.nombre + '\n' ;
	    	}
		]]>
	</mx:Script>
    <mx:XMLList id="employees">
        <employee>
            <name>Christina Coenraets</name>
            <phone>555-219-2270</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Joanne Wall</name>
            <phone>555-219-2012</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Maurice Smith</name>
            <phone>555-219-2012</phone>
            <email>[email protected]</email>
            <active>false</active>
        </employee>
        <employee>
            <name>Mary Jones</name>
            <phone>555-219-2000</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
    </mx:XMLList>


        <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}">
            <mx:columns>
                <mx:DataGridColumn dataField="name" headerText="Name"/>
                <mx:DataGridColumn dataField="phone" headerText="Phone"/>
                <mx:DataGridColumn dataField="email" headerText="Email"/>
                <mx:DataGridColumn headerText="Agregar">
                	<mx:itemRenderer>
                		<mx:Component>
                			<mx:CheckBox label="Escoger" click="modificarTexto()"/>
                		</mx:Component>
                	</mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns>
        </mx:DataGrid>

	 <mx:TextArea id="textos"/>
        
</mx:Application>

Con ese código se supone que al seleccionar un checkbox me haría escoger el item del datagrid, pero no es así, me marca error, diciendo:
1180: Call to a possibly undefined method modificarTexto. componentesComplejos/src componentesComplejos.mxml line 53 1208094605728 122

Lo cual para mí resulta extraño, quiere decir que los componentes rendereados dentro de otros componentes no pueden llamar otras funciones??

Obvio que cuando saco el checkbox del datagrid si funciona. Ojala hacerse de esta manera, sino la solución sería pasar el texto del datagrid a un campo de texto externo si usar el checkbox y agregarlo con un boton al textarea...

Saludos.
__________________
Webmaster
http://www.conglomodigital.com
  #2 (permalink)  
Antiguo 14/04/2008, 15:08
 
Fecha de Ingreso: enero-2007
Mensajes: 26
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Error, no puedo llamar una función

no puedes llamar a una función porque actua como si fuera un componente nuevo.

Es como si este código de tu ej
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox label="Escoger" click="modificarTexto()"/>
</mx:Component>
</mx:itemRenderer>

Lo metieses en un componente nuevo (que de echo es lo que te aconsejo)
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:CheckBox label="Escoger" click="modificarTexto()"/>
</mx:HBos>
(Aunque realmente es lo mismo que el codigo de arriba, las dos formas son iguales)

No sabe que es modificarTexto() porque no existe en el componente, tendrías que llamar con un evento, Application.application... o cualquier historia al procedimiento modificarTexto.
  #3 (permalink)  
Antiguo 14/04/2008, 19:01
 
Fecha de Ingreso: octubre-2003
Mensajes: 208
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Error, no puedo llamar una función

Sale gracias... aun no consigo hacerlo funcionar simplemente no me deja...

No tengo la menor idea de como hacer que si lo reconosca, mediante un evento tampoco me ha resultado
__________________
Webmaster
http://www.conglomodigital.com
  #4 (permalink)  
Antiguo 15/04/2008, 02:33
 
Fecha de Ingreso: enero-2007
Mensajes: 26
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Error, no puedo llamar una función

<mx:itemRenderer>
<mx:Component>
<mx:CheckBox label="Escoger" click="Application.application.modificarTexto()"/>
</mx:Component>
</mx:itemRenderer>

Intenta algo así.
  #5 (permalink)  
Antiguo 15/04/2008, 02:59
 
Fecha de Ingreso: octubre-2003
Mensajes: 208
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Error, no puedo llamar una función

Lo siento, lo intente pero sale ootro error =(

SAle este eerror --> Access of undefined property Application


que método usaste tu para tu list con checkboxes?
__________________
Webmaster
http://www.conglomodigital.com
  #6 (permalink)  
Antiguo 15/04/2008, 03:25
 
Fecha de Ingreso: octubre-2003
Mensajes: 208
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Error, no puedo llamar una función

EAAAAAAAAAAAAAAAAA LO LOGREEE!!! FGRACIAS FALCATIN!!!!! A PARTIR DE TU CÓDIGO PUDE ENCONTRAR LA SOLUCIÓN

Código:
<?xml version="1.0"?>
<!-- DataGrid control example. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:components="components.*">
	<mx:Script>
		<![CDATA[
			public function modificarTexto():void 
           {
           	//import mx.controls.Alert;
           	//Alert.show("bien","bientos");
           	textos.text+= dg.selectedItem.name + '\n' ;
	    	}
		]]>
	</mx:Script>
    <mx:XMLList id="employees">
        <employee>
            <name>Christina Coenraets</name>
            <phone>555-219-2270</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Joanne Wall</name>
            <phone>555-219-2012</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Maurice Smith</name>
            <phone>555-219-2012</phone>
            <email>[email protected]</email>
            <active>false</active>
        </employee>
        <employee>
            <name>Mary Jones</name>
            <phone>555-219-2000</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
    </mx:XMLList>

    <mx:Panel title="DataGrid Control Example" height="100%" width="100%" 
        paddingTop="10" paddingLeft="10" paddingRight="10">

        <mx:Label width="100%" color="blue"
            text="Select a row in the DataGrid control."/>

        <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}">
            <mx:columns>
                <mx:DataGridColumn dataField="name" headerText="Name"/>
                <mx:DataGridColumn dataField="phone" headerText="Phone"/>
                <mx:DataGridColumn dataField="email" headerText="Email"/>
                <mx:DataGridColumn headerText="Agregar">
                	<mx:itemRenderer>
                	
                		<mx:Component>
                			<mx:CheckBox label="Escoger" 
                				change="mx.core.Application.application.modificarTexto()"/>
                		</mx:Component>
                	</mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns>
        </mx:DataGrid>

	 <mx:TextArea id="textos"/>

        <mx:Form width="100%" height="100%">
            <mx:FormItem label="Name">
                <mx:Label text="{dg.selectedItem.name}"/>
            </mx:FormItem>
            <mx:FormItem label="Email">
                <mx:Label text="{dg.selectedItem.email}"/>
            </mx:FormItem>
            <mx:FormItem label="Phone">
                <mx:Label text="{dg.selectedItem.phone}"/>
            </mx:FormItem>
        </mx:Form>
        
    </mx:Panel>
</mx:Application>
Si te fijas sólo agregué public a la función privada para que components pudiera accesarla y agregue a Application.application antes mx.core. y listo!!!!!!!

grax por tu ayuda... saludos
__________________
Webmaster
http://www.conglomodigital.com
  #7 (permalink)  
Antiguo 16/04/2008, 10:32
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Re: Error, no puedo llamar una función

El uso de "mx.core.Application" es una mala paractica y no deberia de usuarse, es como si usaramos _root en Flash :S
  #8 (permalink)  
Antiguo 16/04/2008, 10:34
 
Fecha de Ingreso: octubre-2003
Mensajes: 208
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Error, no puedo llamar una función

es que ´no me salía de otra manera.... intentaré usando otras prácticas...
__________________
Webmaster
http://www.conglomodigital.com
  #9 (permalink)  
Antiguo 30/01/2009, 21:01
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: Re: Error, no puedo llamar una función

Cita:
Iniciado por TMeister Ver Mensaje
El uso de "mx.core.Application" es una mala paractica y no deberia de usuarse, es como si usaramos _root en Flash :S
si dices eso por que no pones un ejemplo de que hacer en este caso.

yo tampoco se como llamar a la funcion cuando esta en un nuevo componente.
pero lo mas logico es asi.
para que no se rompan la cabeza buscando en google: 1180: Call to a possibly undefined method.
esta es la solucion:
Código PHP:


<mx:itemRenderer>
<
mx:Component>
<
mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<
mx:Script>
<![
CDATA[
public function 
modificarTexto():void 
{
//import mx.controls.Alert;
//Alert.show("bien","bientos");
textos.text+= dg.selectedItem.name '\n' ;
}
]]>
</
mx:Script>
<
mx:CheckBox label="Escoger" click="modificarTexto()"/>
</
mx:Application>
</
mx:Component>
</
mx:itemRenderer

a mi parecer esto me parece lo mismo que: "mx.core.Application" un que alquien diga lo contrario.(obio que no es lo mismo pues declaro la variable en la nueva aplicacion pero me parece que es innesecario.)

espero tener respuesta de ustedes.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:12.