Как вызвать функцию загрузки внутри javascript в Angular 6? - PullRequest
0 голосов
/ 13 сентября 2018

Я импортирую игру jquery в мое приложение ionic version 4, основанное на Angular 6. Я могу импортировать все необходимые файлы js и css в angular. Но как только игра начинает использовать

game.onload ()

в функции windows.load, то же самое я пытался в ngInit () в Angular 6. Но это не работает! Как я могу вызвать функцию, которая определена внутри переменной в JavaScript с помощью Angular 6.

Мой код JS:

var game = {
    data: {
        score: 0,
        steps: 0,
        start: !1,
        newHiScore: !1,
        muted: !1
    },
    resources: [{
        name: "bg",
        type: "image",
        src: "../data/img/bg.png"
    }, {
        name: "clumsy",
        type: "image",
        src: "../data/img/clumsy.png"
    }, {
        name: "pipe",
        type: "image",
        src: "../data/img/pipe.png"
    }, {
        name: "logo",
        type: "image",
        src: "../data/img/logo.png"
    }, {
        name: "ground",
        type: "image",
        src: "../data/img/ground.png"
    }, {
        name: "gameover",
        type: "image",
        src: "../data/img/gameover.png"
    }, {
        name: "gameoverbg",
        type: "image",
        src: "../data/img/gameoverbg.png"
    }, {
        name: "hit",
        type: "image",
        src: "../data/img/hit.png"
    }, {
        name: "getready",
        type: "image",
        src: "../data/img/getready.png"
    }, {
        name: "new",
        type: "image",
        src: "../data/img/new.png"
    }, {
        name: "share",
        type: "image",
        src: "../data/img/share.png"
    }, {
        name: "tweet",
        type: "image",
        src: "../data/img/tweet.png"
    }, {
        name: "theme",
        type: "audio",
        src: "../data/bgm/"
    }, {
        name: "hit",
        type: "audio",
        src: "../data/sfx/"
    }, {
        name: "lose",
        type: "audio",
        src: "../data/sfx/"
    }, {
        name: "wing",
        type: "audio",
        src: "../data/sfx/"
    }],
    onload: function() {
        return me.video.init(900, 600, {
            wrapper: "screen",
            scale: "auto",
            scaleMethod: "fit"
        }) ? (me.audio.init("mp3,ogg"), void me.loader.preload(game.resources, this.loaded.bind(this))) : void alert("Your browser does not support HTML5 canvas.")
    },
    loaded: function() {
        me.state.set(me.state.MENU, new game.TitleScreen), me.state.set(me.state.PLAY, new game.PlayScreen), me.state.set(me.state.GAME_OVER, new game.GameOverScreen), me.input.bindKey(me.input.KEY.SPACE, "fly", !0), me.input.bindKey(me.input.KEY.M, "mute", !0), me.input.bindPointer(me.input.KEY.SPACE), me.pool.register("clumsy", game.BirdEntity), me.pool.register("pipe", game.PipeEntity, !0), me.pool.register("hit", game.HitEntity, !0), me.pool.register("ground", game.Ground, !0), me.state.change(me.state.MENU)
    }
}; 

Я хочу вызвать функцию загрузки внутри игровой переменной!

Мой угловой код:

import { Component, OnInit } from '@angular/core';
import { NavParams  } from '@ionic/angular';
import { ActivatedRoute } from '@angular/router';
//declare function helloJS();
@Component({
  selector: 'app-test',
  templateUrl: './test.page.html',
  styleUrls: ['./test.page.scss'],
})
export class TestPage implements OnInit {
  id: string
  constructor(private route : ActivatedRoute) { 

  }

  ngOnInit() {
    game.onload();
  }
}

Я пробовал приведенный выше код! Но ошибка cannot find name game. Я знаю, что это обычно как угловой, не могу понять, что это за игра! Так как я мог вызвать эту функцию! Пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 13 сентября 2018

Экспорт переменной

Demo.js

 exports.game = {
        data: {
            score: 0,
            steps: 0,
            start: !1,
            newHiScore: !1,
            muted: !1
        },
        resources: [{
            name: "bg",
            type: "image",
            src: "../data/img/bg.png"
        }, {
            name: "clumsy",
            type: "image",
            src: "../data/img/clumsy.png"
        }, {
            name: "pipe",
            type: "image",
            src: "../data/img/pipe.png"
        }, {
            name: "logo",
            type: "image",
            src: "../data/img/logo.png"
        }, {
            name: "ground",
            type: "image",
            src: "../data/img/ground.png"
        }, {
            name: "gameover",
            type: "image",
            src: "../data/img/gameover.png"
        }, {
            name: "gameoverbg",
            type: "image",
            src: "../data/img/gameoverbg.png"
        }, {
            name: "hit",
            type: "image",
            src: "../data/img/hit.png"
        }, {
            name: "getready",
            type: "image",
            src: "../data/img/getready.png"
        }, {
            name: "new",
            type: "image",
            src: "../data/img/new.png"
        }, {
            name: "share",
            type: "image",
            src: "../data/img/share.png"
        }, {
            name: "tweet",
            type: "image",
            src: "../data/img/tweet.png"
        }, {
            name: "theme",
            type: "audio",
            src: "../data/bgm/"
        }, {
            name: "hit",
            type: "audio",
            src: "../data/sfx/"
        }, {
            name: "lose",
            type: "audio",
            src: "../data/sfx/"
        }, {
            name: "wing",
            type: "audio",
            src: "../data/sfx/"
        }],
        onload: function() {
            return me.video.init(900, 600, {
                wrapper: "screen",
                scale: "auto",
                scaleMethod: "fit"
            }) ? (me.audio.init("mp3,ogg"), void me.loader.preload(game.resources, this.loaded.bind(this))) : void alert("Your browser does not support HTML5 canvas.")
        },
        loaded: function() {
            me.state.set(me.state.MENU, new game.TitleScreen), me.state.set(me.state.PLAY, new game.PlayScreen), me.state.set(me.state.GAME_OVER, new game.GameOverScreen), me.input.bindKey(me.input.KEY.SPACE, "fly", !0), me.input.bindKey(me.input.KEY.M, "mute", !0), me.input.bindPointer(me.input.KEY.SPACE), me.pool.register("clumsy", game.BirdEntity), me.pool.register("pipe", game.PipeEntity, !0), me.pool.register("hit", game.HitEntity, !0), me.pool.register("ground", game.Ground, !0), me.state.change(me.state.MENU)
        }
    }; 

Затем импортируйте внутри вашего компонента

import { Component } from '@angular/core';
import * as games from '../assets/demo';

ngOnInit() {
    games.game.onload();
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...