Comunidad de diseño web y desarrollo en internet online

Ayudaaaaaaaaaaaaaaaa!!!

Citar            
MensajeEscrito el 17 Ago 2010 01:53 pm
Dios les bendiga mis hermanitos de Cristallab,

Saludos! :lol:

Bueno tengo Dos Preguntas y para ustedes me saquen esa Duda.
primero les comento algo estoy leeyendo el libre (ActionScript Design Patterns) bueno en los primeron ejemplo va todo bien pero llegue la parte de (Abstraction) y este es el ejemplo que dio curiosidad de preguntarles algo aqui va a el codigo del ejemplo.

Esta es la Class Abstracta que el usa para hacer un VideoPlayer algo bien simple.

Código ActionScript :

package
{
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.media.Video;
import flash.display.Sprite;
public class PlayVideoAbstract extends Sprite
{
public function PlayVideoAbstract(nc:NetConnection,
ns:NetStream,vid:Video,flick:String,xpos:uint,ypos:uint)
{
nc=new NetConnection( );
nc.connect(null);
ns= new NetStream(nc);
vid=new Video( );
vid.attachNetStream(ns);
ns.play(flick);
vid.x=xpos;
vid.y=ypos;
addChild(vid);
       }
    }
}


Y esta es su superClass.

Código ActionScript :

package
{
import flash.display.Sprite
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.media.Video;
public class PlayAbstract extends Sprite
{
private var conn:NetConnection;
private var stream:NetStream;
private var vid:Video;
private var flick:String="adp.flv";
public function PlayAbstract( )
{
var playIt:PlayVideoAbstract=new PlayVideoAbstract(conn,stream,vid,
flick,100,50);
addChild(playIt);
    }
}


Ahora biene mi Interogante :shock: ?

Tengo un archivo Main.as

Código ActionScript :

package
{
import flash.display.Sprite
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.media.Video;

public class Main extends Sprite
{

private var conn:NetConnection;
private var stream:NetStream;
private var vid:Video;
private var flick:String="adp.flv";

public function Main( )
{
     var playIt:PlayVideoAbstract=new PlayVideoAbstract(conn,stream,vid,flick,100,50);
     addChild(playIt);

    }
     
----> aqui es donde entra mi curiosidad el ejemplo esta muy bien pero decidi inventar algo quise detener el video
eh hise lo normal.<-----

    private function StopVideo():vois{
       stage.addEventListener(MouseEvent.CLICK,detener);
    }

private function detener(m:MouseEvent):void
{
   stream.pause();  <--- y nada me da error y para no alargarle esto hice todo y no me deja detener el video al ver este comportamiento dije Dios mio no voy a poder ni hacerle el control de volumen  etc...porfavor diganme como ago para que si se pueda detener el video sin que me de error eso seria un gran avance para mi pleeeeeeeeeeease :lol: 
ahora que estoy usando esa clase abstracta expliquenme bien como deveria usar este ejemplo que les eh mostrado .
}

}

Por calibre

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 17 Ago 2010 02:18 pm
Stream es un parámetro que le pasas a PlayVideoAbstract, no está ni siquiera instanciado, por eso falla.
La idea de una clase abstracta es que la extiendas, no que la uses directamente.
Si mal no recuerdo, ese libro asume que quien lo lee conoce de patterns y esta buscando como aplicarlos a AS3, no se detiene mucho en explicar OOP, pero por ahí me equivoco, hace ya años que lo leí

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Ago 2010 02:54 pm
:( no entiendo muy bien les gradeceria que me explicaran con un ejemplo de como usar las clases abstractas osea es para cojer la idea porfavor quiero aprender bien como usarlas porque me interesa ese libro ayudenme con un ejemplo
pero en base con mi ejemplo osea primero la clase abstracta despues como dice (solisarg) que hay que extender antes de usarla en el Main..

bueno les agradeceria mucho mucho amigos de verdad

Por calibre

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 17 Ago 2010 02:58 pm
Las clases abstractas no existen en Flash, el libro sugiere como hacer para "simularlas", porque alguien que viene del Java por ejemplo puede extrañarlas en su diseño. La pregunta sería ¿por que quieres usar clases abstractas? Si la respuesta es aprender, entonces comienza con el principio, uno de los mejores libros sobre AS3, http://oreilly.com/catalog/9780596526948
Explicado con palitos y manzanitas por el mejor pedagogo de AS

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Ago 2010 03:01 pm
osea no es importante usar clases abstractas en as3?

Por calibre

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 17 Ago 2010 09:00 pm
BuenAS:

Más que no sea importante, es que como dice solisarg, en ActionScript no existen las clases abstractas, aunque existen métodos para "crear la ilusión" de que existen :)

Una clase abstracta, dicho así en plan rápido, es aquella que tiene métodos sin implementar (o sea, vacíos, entre las llaves no hay ningún código) y que obligatoriamente hay que implementar cuando se extienden. En lenguajes como java (en los que sí existen las clases abstractas) cuando extiendes una, te aparecen todos sus métodos abstractos para que los implementes (o sea, escribas el código entre las llaves). Si omites uno, el compilador te emite un error. Sin embargo, en ActionScript esto no existe y tiene que ser el DESARROLLADOR el que se comprometa a implementar todos los métodos abstractos (él mismo con su mecanismo, el compilador no le va a decir nada si se salta uno :))

¿Y esto para qué sirve? Imagina por ejemplo que estás haciendo un juego de carreras con varios tipos de vehículos. Creas la clase abstracta Vehiculo con los métodos abstractos, curvar(), acelerar(), frenar(). Si AS contemplase las clases abstractas, al extender Vehículo, por ejemplo para crear Coche, sería OBLIGATORIO que implementaras estos tres métodos curvar(), acelerar() y frenar(), y así todos los coches curvarían, acelerarían y frenarían; si creas Moto, la misma historia, pero ahora estos tres métodos se implementarían teniendo en cuenta las "peculiaridades" de una moto (por ejemplo, una moto y un coche no "curvan" igual).

En AS eres TÚ el que debes acordarte de implementar los tres métodos. Se suele hacer que la clase implemente una interfaz para "simular" esto y así recordarte qué métodos hay que implementar.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.