Advertisement
Guest User

Untitled

a guest
Sep 4th, 2015
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. /// <reference path="./typings/angularjs/angular.d.ts"/>
  2. /// <reference path="./typings/jquery/jquery.d.ts"/>
  3. /// <reference path="./typings/ng-file-upload/ng-file-upload.d.ts"/>
  4. class MainController {
  5. /* --- --- --- private const field --- --- --- */
  6. private DRAW_MILLI_SEC = 3000;
  7.  
  8. /* --- --- --- private field --- --- --- */
  9.  
  10. /*
  11. * エンドロール中にフェードインアウトを
  12. * 繰り返して描画される画像のリスト
  13. */
  14. private portraits: FileList;
  15. private drawnPortrait: number = 0;
  16.  
  17. /* --- --- --- public constructor --- --- --- */
  18. constructor(private $interval: ng.IIntervalService) {}
  19.  
  20. /* --- --- --- public method --- --- --- */
  21. /**
  22. * フォームで指定された画像をbodyの背景に設定します
  23. * @param FileAPI(<input type="file"/>)で選択した1つのファイル
  24. */
  25. public setBackgroundImage($files: FileList) : void {
  26. let file: File = $files[0];
  27. let fileReader = new FileReader();
  28. let setBgImage: EventListener = e => $("body").css("background-image", "url(" + fileReader.result + ")");
  29. fileReader.addEventListener("load", setBgImage);
  30. fileReader.readAsDataURL(file);
  31. }
  32.  
  33.  
  34. /*
  35. * エンドロール中に描画される画像のリストを設定します
  36. * @param エンドロール中に描画される画像のリスト
  37. */
  38. public setPortraits($files: FileList) : void {
  39. this.portraits = $files;
  40. }
  41.  
  42.  
  43. /*
  44. * setPortraits(FileList)で選択した全ての画像を
  45. * フェードインとフェードアウトで描画します
  46. */
  47. public startDrawingPortraits() : void {
  48. if (this.portraits == null) {
  49. alert("portraits was not selected");
  50. return;
  51. }
  52.  
  53. //NOTE: why couldn't I use for loop ?
  54. this.$interval(this.drawingPortraits(), this.DRAW_MILLI_SEC, this.portraits.length);
  55. }
  56.  
  57. /* --- --- --- private method --- --- --- */
  58. /**
  59. * 画像の残り描画回数と画像のリストを受け取り
  60. * 画像の1つをDRAW_SEC秒描画してから次の画像の描画に入ります。
  61. * 画像の描画には強調効果としてフェードイン, フェードアウトが使用されます。
  62. * @param rest 画像の残り描画回数
  63. * @param portraits 画像のリスト
  64. */
  65. private drawingPortraits() : any {
  66. let portrait: File = this.portraits[this.drawnPortrait++];
  67. let fileReader = new FileReader();
  68. let drawingPortraits: EventListener = e => $("#portrait").attr("src", fileReader.result);
  69. fileReader.addEventListener("load", drawingPortraits);
  70. fileReader.readAsDataURL(portrait);
  71. console.log(this.drawnPortrait);
  72. return true;
  73. }
  74. }
  75.  
  76. let appEndrollMate = angular.module("appEndrollMate", ["ngFileUpload"]);
  77. appEndrollMate.controller("MainController", ["$interval", MainController]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement