2017-07-28 76 views
1

我想在我的Angular項目中使用p5.js時遇到問題。Angular和p5.js - p5.loadSound不是函數

我使用Angular CLI。 包括p5.js我.angular-cli.json文件:

"scripts": [  
    "../node_modules/p5/lib/p5.min.js", 
    "../node_modules/p5/lib/addons/p5.sound.js", 
    "../node_modules/p5/lib/addons/p5.dom.js" 
], 

然後在我的部分我寫:

import { Component, OnInit } from '@angular/core'; 

import * as p5 from 'p5'; 

@Component({ 
    selector: 'app-player', 
    templateUrl: './player.component.html', 
    styleUrls: ['./player.component.scss'] 
}) 
export class PlayerComponent implements OnInit { 

    play: boolean = false; 

    constructor() { } 

    ngOnInit() { 
    const s = (p) => { 

     let song; 
     let canvas; 

     p.preload =() => { 
     console.log('preload'); 
     song = p.loadSound('assets/music/Thunderstruck.mp3'); 
     } 

     p.setup =() => { 
     canvas = p.createCanvas(595, 100); 
     canvas.parent('equalizer'); 
     p.background(0); 
     } 
    } 

    let player = new p5(s); 

    } 

    onPlay() { 
    this.play = !this.play; 

    } 

} 

,然後當我想加載我的歌,並使用LoadSound只有(),JS告訴我錯誤類型錯誤:p.loadSound不是一個函數

好了,JS不能在我的文件中找到這個方法,但是在瀏覽器控制檯,我可以寫這樣的事:

let song = p5.prototype.loadSound('assets/music/Thunderstruck.mp3'); 
song.play(); 

,一切工作(screenshot of my console)!

我想在我的組件來寫:

song = p.prototype.loadSound('assets/music/Thunderstruck.mp3'); 

它不工作。

我在做什麼錯?

+0

或許,它只是一個打字稿錯誤,請指定'p'類型爲'any'像 'ngOnInit(){ 常量S =(P :any)=> {' –

+0

不,它不起作用。 我可以以另一種方式使用p5.js嗎? – Slavik

+0

我有完全相同的錯誤。任何更新? @Slavik –

回答

0

替換

import * as p5 from 'p5'; 

*

declare var p5: any;