2016-08-29 3 views
0

Как использовать эти простые функции js в GWT? (Анимация сценарий картины, например)Функции JS в GWT

<script type="text/javascript"> 
var cSpeed=4; 
var cWidth=64; 
var cHeight=64; 
var cTotalFrames=8; 
var cFrameWidth=64; 
var cImageSrc='images/sprites.gif'; 

var cImageTimeout=false; 
var cIndex=0; 
var cXpos=0; 
var cPreloaderTimeout=false; 
var SECONDS_BETWEEN_FRAMES=0; 

function startAnimation(){ 

    document.getElementById('loaderImage').style.backgroundImage='url('+cImageSrc+')'; 
    document.getElementById('loaderImage').style.width=cWidth+'px'; 
    document.getElementById('loaderImage').style.height=cHeight+'px'; 

    //FPS = Math.round(100/(maxSpeed+2-speed)); 
    FPS = Math.round(100/cSpeed); 
    SECONDS_BETWEEN_FRAMES = 1/FPS; 

    cPreloaderTimeout=setTimeout('continueAnimation()', SECONDS_BETWEEN_FRAMES/1000); 

} 

function continueAnimation(){ 

    cXpos += cFrameWidth; 
    //increase the index so we know which frame of our animation we are currently on 
    cIndex += 1; 

    //if our cIndex is higher than our total number of frames, we're at the end and should restart 
    if (cIndex >= cTotalFrames) { 
     cXpos =0; 
     cIndex=0; 
    } 

    if(document.getElementById('loaderImage')) 
     document.getElementById('loaderImage').style.backgroundPosition=(-cXpos)+'px 0'; 

    cPreloaderTimeout=setTimeout('continueAnimation()', SECONDS_BETWEEN_FRAMES*1000); 
} 

function stopAnimation(){//stops animation 
    clearTimeout(cPreloaderTimeout); 
    cPreloaderTimeout=false; 
} 

function imageLoader(s, fun)//Pre-loads the sprites image 
{ 
    clearTimeout(cImageTimeout); 
    cImageTimeout=0; 
    genImage = new Image(); 
    genImage.onload=function(){cImageTimeout=setTimeout(fun, 0)}; 
    genImage.onerror=new Function('alert(\'Could not load the image\')'); 
    genImage.src=s; 
} 

//The following code starts the animation 
new imageLoader(cImageSrc, 'startAnimation()'); 

попытался обертывание

public static native void anim() 
/*-{ 
    js here 
}-*/; 

но Uncaught ReferenceError: startAnimation не определен

я видел http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html , но не сделал найти примеры для функций js

ответ

0

Вы можете использовать JSNI:

Метод 1: если вы ВСЕГДА звоните imageLoader с fun = 'startAnimation()', я имею в виду, вы всегда использовать imageLoader таким образом: imageLoader(s, 'startAnimation()');

class YourMethods 
{ 
    public static native void imageLoader(String s) /*-{ 
    imageLoader(s, 'startAnimation()'); 
    }-*/; 
} 

Вы можете вызвать этот метод, как это:

YourMethods::imageLoader(s); 

Метод 2: если вы fun изменение параметра (нет т всегда 'startAnimation()'), НО ВСЕГДА строкового типа

class YourMethods 
{ 
    public static native void imageLoader(String s, String fun) /*-{ 
    imageLoader(s, fun); 
    }-*/; 
} 

В этом случае: вы определяете второй параметр, как «JavaScript имя функции», и назвать его таким образом:

YourMethods::imageLoader(s, "startAnimation()"); 

И GWT понять весело параметр как имя функции яваскрипта и строковый типа

Метод 3: конвертировать весь ваши яваскрипта кода GWT

+0

но «fun» - это функция в args здесь. Функция js не является реальным java-типом:/ и вообще, где найти разные примеры использования встроенного js в gwt? в сети не так много таких примеров – Jack

+0

ответ отредактирован, заботясь о проблеме 'fun' –

+0

. В итоге я просто поместил js-код в html и вызвал его из приложения. но задача заключалась в том, чтобы динамически добавить его на страницу. Я боюсь, что ответ на вопрос о том, как создавать и использовать собственные js в gwt непосредственно из приложения, мы не получили. хотя я буду отмечать ваш ответ как правильный, это дает основание думать – Jack

1

Вам нужно добавить $ wnd для доступа к JavaScript, который включен непосредственно на вашу страницу хоста HTML.

$wnd.startAnimation(); 

 Смежные вопросы

  • Нет связанных вопросов^_^