今天试了下javafx 和 jdk7 感觉它给的Demo很给力于是写了如下代码:
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        StackPane root = new StackPane();
        Image img=new Image(getClass().getResource("myGif.gif").toExternalForm());
        ImageView imv=new ImageView(img);
// 这里该如何设置
        root.getChildren().add(imv);
        primaryStage.setScene(new Scene(root, 300, 250, Color.BLACK));
        primaryStage.show();
    }发现gif图片显示很糟糕,没有中心一般的振动和错位显示
仔细观察后发现 是gif图片的周围空白部分被自动删除了
然后几张图片 就失去了参照物一样播放所以求助各位大大 通过如何设置能达到
像使用 java.awt.image 和 java.awt.Toolkit 那样的动态图片显示效果

解决方案 »

  1.   

    这个其实是可以办到的,你看很多网站上都实现了图片在服务器中是连续变化的例子,例如洪恩,我将洪恩的代码展示如下,当然朋友也可以到官网去看http://www.hongen.com/pc/homepage/javascript/sample/showlogo.htm。
    在代码的下面我将告诉你它的核心原理<script language="JavaScript1.2"> 
    <!-- 
    var scrollerwidth=64
    var Scrollerheight=64
    var scrollerbgcolor='white'
    var pausebetweenimages=3000var slideimages=new Array()
    slideimages[0]='<a href="http://www.hongen.com/pc/index.htm">;<img src="img/logo1.gif" border=0"></a>'
    slideimages[1]='<a href="http://www.hongen.com/eng/index.htm">;<img src="img/logo2.gif">'
    slideimages[2]='<a href="http://www.hongen.com/shop/index.htm">;<img src="img/logo3.gif">'
    slideimages[3]='<a href="http://www.hongen.com/album/index.htm">;<img src="img/logo4.gif">'
    slideimages[4]='<a href="http://www.hongen.com/matrix/">;<img src="img/logo5.gif">'if (slideimages.length>1)
    i=2
    else
    i=0function move1(whichlayer){
    tlayer=eval(whichlayer)
    if (tlayer.top>0&&tlayer.top<=5){
    tlayer.top=0
    setTimeout("move1(tlayer)",pausebetweenimages)
    setTimeout("move2(document.main.document.second)",pausebetweenimages)
    return
    }
    if (tlayer.top>=tlayer.document.height*-1){
    tlayer.top-=5
    setTimeout("move1(tlayer)",100)
    }
    else{
    tlayer.top=scrollerheight
    tlayer.document.write(slideimages[i])
    tlayer.document.close()
    if (i==slideimages.length-1)
    i=0
    else
    i++
    }
    }function move2(whichlayer){
    tlayer2=eval(whichlayer)
    if (tlayer2.top>0&&tlayer2.top<=5){
    tlayer2.top=0
    setTimeout("move2(tlayer2)",pausebetweenimages)
    setTimeout("move1(document.main.document.first)",pausebetweenimages)
    return
    }
    if (tlayer2.top>=tlayer2.document.height*-1){
    tlayer2.top-=5
    setTimeout("move2(tlayer2)",100)
    }
    else{
    tlayer2.top=scrollerheight
    tlayer2.document.write(slideimages[i])
    tlayer2.document.close()
    if (i==slideimages.length-1)
    i=0
    else
    i++
    }
    }function move3(whichdiv){
    tdiv=eval(whichdiv)
    if (tdiv.style.pixelTop>0&&tdiv.style.pixelTop<=5){
    tdiv.style.pixelTop=0
    setTimeout("move3(tdiv)",pausebetweenimages)
    setTimeout("move4(second2)",pausebetweenimages)
    return
    }
    if (tdiv.style.pixelTop>=tdiv.offsetHeight*-1){
    tdiv.style.pixelTop-=5
    setTimeout("move3(tdiv)",100)
    }
    else{
    tdiv.style.pixelTop=scrollerheight
    tdiv.innerHTML=slideimages[i]
    if (i==slideimages.length-1)
    i=0
    else
    i++
    }
    }function move4(whichdiv){
    tdiv2=eval(whichdiv)
    if (tdiv2.style.pixelTop>0&&tdiv2.style.pixelTop<=5){
    tdiv2.style.pixelTop=0
    setTimeout("move4(tdiv2)",pausebetweenimages)
    setTimeout("move3(first2)",pausebetweenimages)
    return
    }
    if (tdiv2.style.pixelTop>=tdiv2.offsetHeight*-1){
    tdiv2.style.pixelTop-=5
    setTimeout("move4(second2)",100)
    }
    else{
    tdiv2.style.pixelTop=scrollerheight
    tdiv2.innerHTML=slideimages[i]
    if (i==slideimages.length-1)
    i=0
    else
    i++
    }
    }function startscroll(){
    if (document.all){
    move3(first2)
    second2.style.top=scrollerheight
    }
    else if (document.layers){
    move1(document.main.document.first)
    document.main.document.second.top=scrollerheight+5
    document.main.document.second.visibility='show'
    }
    }window.onload=startscroll//--></script>
          <ilayer id="main" width=&{scrollerwidth}; height=&{scrollerheight}; bgcolor=&{scrollerbgcolor};> 
          <layer id="first" left=0 top=1 width=&{scrollerwidth};> 
          <script language="JavaScript1.2">
    if (document.layers)
    document.write(slideimages[0])
    </script>
          </layer>
          <layer id="second" left=0 top=0 width=&{scrollerwidth}; visibility=hide> 
          <script language="JavaScript1.2">
    if (document.layers)
    document.write(slideimages[1])
    </script>
          </layer>
          </ilayer>
          <p> 
            <script language="JavaScript1.2">
    <!-- if (document.all){
    document.writeln('<span id="main2" style="position:relative;width:'+scrollerwidth+';height:'+scrollerheight+';overflow:hiden;background-color:'+scrollerbgcolor+'">')
    document.writeln('<div style="position:absolute;width:'+scrollerwidth+';height:'+scrollerheight+';clip:rect(0 '+scrollerwidth+' '+scrollerheight+' 0);left:0;top:0">')
    document.writeln('<div id="first2" style="position:absolute;width:'+scrollerwidth+';left:0;top:1;">')
    document.write(slideimages[0])
    document.writeln('</div>')
    document.writeln('<div id="second2" style="position:absolute;width:'+scrollerwidth+';left:0;top:0">')
    document.write(slideimages[1])
    document.writeln('</div>')
    document.writeln('</div>')
    document.writeln('</span>')
    }
    //--> </script>这是很长的代码呀,其实它的实现原理很简单,我们可以将这张图片预先存储在缓存中,这个javascript代码该怎么写呢,你可以var pic=new Array();
    pic[0]=new Image();
    pic[0].src="http://www.attjs.com/image/1.jpg";//这两行代码就是告诉浏览器我要将图片预储存在缓存中拉,如果我不关闭浏览器或则认为清除缓存,它永远存在于缓存中
    这样,再加上图片滚动的代码就可以实现在服务器中是连续变化的了。
      

  2.   

    no javafx script but javafx 2.0 and later