Advertisement
angrax

Reproductor

Dec 28th, 2016
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /// <reference path="../typings/jquery/jquery.d.ts" />
  2. declare var stage: any, exportRoot: any, loader: any, createjs: any;
  3. declare var require: (modulo: Array<any>, moduleId: Function) => any;
  4. var lib = lib || {};
  5. var images = images || {};
  6.  
  7. class Hud {
  8.     canvas: HTMLCanvasElement;
  9.     subtitulos: Boolean = false;
  10.     divSubtitulos: HTMLDivElement;
  11.  
  12.     private _redimensionar: Boolean = false;
  13.     get redimensionar(): Boolean {
  14.         return this._redimensionar;
  15.     }
  16.  
  17.     set redimensionar(resize: Boolean) {
  18.         if (resize) {
  19.             (<any>window).addEventListener("resize", this.redimensionarCanvas, false);
  20.         } else {
  21.             (<any>window).removeEventListener("resize", this.redimensionarCanvas, false);
  22.         }
  23.         this._redimensionar = resize;
  24.     }
  25.  
  26.     constructor(canvas: HTMLCanvasElement) {
  27.         this.canvas = canvas;
  28.     }
  29.  
  30.     private redimensionarCanvas = () => {
  31.         var windowWidth = (<any>window).innerWidth ;
  32.         var windowHeight = (<any>window).innerHeight;
  33.         var canvasWidth = this.canvas.width;
  34.         var canvasHeight = this.canvas.height;
  35.  
  36.         var scaleX = windowWidth / canvasWidth;
  37.         var scaleY = windowHeight / canvasHeight;
  38.  
  39.         stage.scaleX = scaleX;
  40.         stage.scaleY = scaleY;
  41.  
  42.         stage.canvas.width = windowWidth;
  43.         stage.canvas.height = windowHeight;
  44.        
  45.         console.log("X: " + scaleX + " Y: " + scaleY);
  46.  
  47.         stage.update();
  48.     }
  49.    
  50.     public escribirSubtitulo(texto: string): void {
  51.         if (typeof this.divSubtitulos !== "undefined") {
  52.             this.divSubtitulos.innerHTML = texto;
  53.         } else {
  54.             console.log("ERROR: debes seleccionar primero el div donde se desplegaran los subtitulos");
  55.         }
  56.     }
  57. }
  58.  
  59. class PlayerHtml5 {
  60.     canvas: HTMLCanvasElement;
  61.     debug: boolean;
  62.     usarLocalStore: boolean;
  63.     hud: Hud;
  64.     pasoActual: any;
  65.     listaPasos: Array<any>;
  66.  
  67.     constructor(canvas: HTMLCanvasElement) {
  68.         this.canvas = canvas;
  69.         this.hud = new Hud(this.canvas);
  70.     }
  71.  
  72.     public init(pasoObjeto: any, nombrePaso: string): void {
  73.         loader = new createjs.LoadQueue(false);
  74.         loader.installPlugin(createjs.Sound);
  75.         loader.loadManifest(pasoObjeto.properties.manifest);
  76.         exportRoot = new pasoObjeto[nombrePaso]();
  77.  
  78.         (<any>window).handleFileLoad = evt => {
  79.             if (this.debug) {
  80.                 console.log("cargando archivos" + evt.item.src);
  81.             }
  82.             if (evt.item.type == "image") {
  83.                 images[evt.item.id] = evt.result;
  84.             }
  85.         };
  86.  
  87.         (<any>window).handleComplete = () => {
  88.             if (typeof stage === "undefined") {
  89.                 stage = new createjs.Stage(this.canvas);
  90.             }
  91.             stage.addChild(exportRoot);
  92.             stage.update();
  93.  
  94.             createjs.Ticker.setFPS(pasoObjeto.properties.fps);
  95.             createjs.Ticker.addEventListener("tick", stage);
  96.         };
  97.  
  98.         loader.addEventListener("fileload", (<any>window).handleFileLoad);
  99.         loader.addEventListener("complete", (<any>window).handleComplete);
  100.     }
  101.  
  102.     public limpiarCanvas(): void {
  103.         if (typeof stage !== "undefined") {
  104.             stage.removeAllChildren();
  105.             createjs.Sound.stop();
  106.             createjs.Sound.removeAllSounds();
  107.         }
  108.  
  109.         if (this.hud.subtitulos) {
  110.             if (this.hud.divSubtitulos !== undefined) {
  111.                 this.hud.escribirSubtitulo(" ");
  112.             }
  113.         }
  114.  
  115.         this.hud.canvas.width = this.hud.canvas.width;
  116.     }
  117.  
  118.     public cargarPaso(paso: any) {
  119.         if (typeof (<any>window).stage !== "undefined") {
  120.             this.limpiarCanvas();
  121.         }
  122.  
  123.         require([paso], pasoJs => {
  124.             this.init(pasoJs, paso);
  125.         });
  126.     }
  127.  
  128.     public reproducirSonidoPorId(id: string): void {
  129.         createjs.Sound.play(id);
  130.     }
  131.  
  132.     public irAEtiqueta(etiqueta: string): void {
  133.         exportRoot.gotoAndPlay(etiqueta);
  134.     }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement