2017-07-28 78 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;