当前位置: 首页 > 知识库问答 >
问题:

简单反应原生图像游戏是落后的。我如何优化?

龚奇逸
2023-03-14

我想做的是在屏幕上以小半径呈现一些随机位置的img,然后将其增大到一个值,然后减小它,最后将img从屏幕上移除(或者当点击时)--就像这个游戏:http://mouseaccuracy.com/

import React, { Component } from "react";
import { AppRegistry, StyleSheet, Dimensions, View,ToastAndroid,TouchableOpacity,Image,Text } from "react-native";



    const { width: WIDTH, height: HEIGHT } = Dimensions.get("window");
    import { GameLoop } from "react-native-game-engine";
    import { Fonts } from '../utils/Fonts';
    import FastImage from 'react-native-fast-image'
    import * as Progress from 'react-native-progress';
    import SwordImage from "../assets/tapfight/sword.png";
    import ShieldImage from "../assets/tapfight/shield.png";


          this.renderSwordOrCircle(circle)
        )


            })




    )




    }


       }

     renderHealth = () =>{
    return(
      <View>
        <View style={{ alignItems:'center' ,position: "absolute", top: 0, left: 0}}>
        <Text style={{fontFamily:Fonts.MainFont,color:'white',fontSize:25}}>{this.playerHealth}</Text>
        <Progress.Bar color='red' progress={this.playerHealth/100} width={100} height={18} />

        </View>
        <View style={{ alignItems:'center',position: "absolute", top: 0, right: 0}}>
        <Text style={{fontFamily:Fonts.MainFont,color:'white',fontSize:25}}>{this.enemyHealth}</Text>
        <Progress.Bar  color='red' progress={this.enemyHealth/100} width={100} height={18} />
         <FastImage resizeMode="contain" style={{width:100,height:100}} source={require('../assets/tapfight/guard_2_head.png')}></FastImage>
        </View>

      </View>


    )



     }


      render() {
        if(this.state.fight==true){
          return (
            <View style={{flex:1,backgroundColor:'transparent'}} > 
             <GameLoop style={{flex:1}} onUpdate={this.updateCircle}> 
             {this.renderHealth()} 
             {this.renderCircles()}     
             </GameLoop>       
             </View>

          );

        }else{

    return(
      null
    )

        }

      }
    }

    const styles = StyleSheet.create({
      container: {
        flex: 1,
      }
    });

我所做的是我在屏幕上每600毫秒生成一次图像,玩家试着点击它们。问题是当屏幕上有2个以上的图像时,fps显著下降。在android实际设备中测试。我在updateCircle函数结束时更新一次状态。游戏循环是updateCircle组件

共有1个答案

宋宏毅
2023-03-14

您的问题是,您正在尝试使一个组件动画化,而该组件不是为动画化而制作的。

我不太了解FastImage组件,但我知道它的目的是预加载图像,而不是动画。

您应该将Animated.image用于图像,并将Animated.Timing用于管理Animated.image的动画

 类似资料:
  • 我对如何使全屏图像横向方向感兴趣,但没有高度:100%,所以宽度将是100%,但高度是多少,因为在反应原生高度:不工作=

  • 我正在尝试用libgdx开发一个简单的蛇游戏。我的问题是,每次我想要繁殖一些苹果(纹理,20px宽X 20px高),它总是与蛇的身体重叠。我试图避免这种情况,但它在比赛中不断发生。 snake由多个部分组成-每个部分都是一个20px宽X 20px高的纹理(屏幕宽度是480px宽X 800px高) 以下是我迄今为止所做的尝试: 代码很容易解释。每时每刻,屏幕上都有3个不同的苹果。这段代码试图抽奖x-

  • 我很难把我的心思放在这件事上。每当玩家猜错时,它应该从最初的余额中减去他/她的赌注。由于它是在一个循环中,它总是从一开始就取初始平衡,每次都吐出相同的平衡。(很明显)我试过分配不同的变量,但似乎无法找到答案。 我已经省略了中等难度和难难度的方法,因为它们现在是没有用的,直到我弄清楚这个。

  • 简单的推箱子游戏,纯Objective-C代码完成。边界检测,碰撞检测,全部底层代码完成。游戏规则是控制超级玛丽,将炸弹推到怪物的方格里面。

  • 我试图设置与React Native在Android上。做了一些研究,看起来我应该使用Interceptor。我找到的一个例子解释了如何做到这一点(链接),但我不确定如何注册拦截器。 因此,为了设置,我使用这个类: 那么剩下的就是注册上面的拦截器,那么它应该在哪里完成呢?可能在? 我在构建应用程序时没有收到任何错误,因此我认为应该很好-只需要让应用程序使用它。 更新:我当前正在尝试在中注册拦截器,