如何在需要图像文件的require语句中动态更改源?

时间:2016-07-05 15:40:37

标签: javascript react-native

我在React Native中使用的图像对图像源使用require语句。我想改变图像的来源,所以它有点像在动画中切换帧。

#include <cstdio>
using namespace std;

long *a;
int *dp;

int solve(int);
int main()
{
    int n;
    scanf("%d", &n);
    a = new long[n];
    dp = new int[n]{};
    for (int i = 0; i < n; i++) scanf("%ld", a+i);
    printf("%d", solve(n-1));
}

int solve(int n)
{
    if (dp[n]) return dp[n];
    int &m = dp[n] = 1, k;
    for(int j = 0; j < n; j++)
        if (((a[n] < 0 && a[j] > 0 && -a[n] > a[j]) || (a[n] > 0 && a[j] < 0 && a[n] > -a[j])))
            if ((k = 1 + solve(j)) > m) m = k;
    return m;
}

3 个答案:

答案 0 :(得分:0)

要求两者,然后在您需要的地方使用正确的:

var hello = require('./hello');
var goodbye = require('./goodbye');

hello.myFunction();

// later:

goodbye.anotherFunction()

答案 1 :(得分:0)

我不认为这是一个很好的编程风格,但它是可能的。 例如,模块看起来像这样

exports.name = () => {
  console.log('modul1')
}

像这样的主文件,它会像预期的那样工作

const modul1 = './modul1'
const modul2 = './modul2'

var modul = require(modul1)
modul.name() // -> modul1
modul = require(modul2)
modul.name() // -> modul2

答案 2 :(得分:0)

我最终只是创建了一个像这样的对象:

public static async Task<Scenario> Test() { return await new AsyncScenario(); } public class AsyncScenario { public TaskAwaiter<Scenario> GetAwaiter() { return new TaskAwaiter<Scenario>(); } }

在我的Image标记中,我将var frames = { '1': require('./assets/phase1.png'), '2': require('./assets/phase2.png'), '3': require('./assets/phase3.png'), '4': require('./assets/phase4.png'), } 属性设置为source,并使用this.state.frame等帧中的新密钥设置setState。幸运的是我没有太多的图像,但这不是最理想的解决方案。

编辑: 另一种解决方案(更优雅,更简洁)是在android&gt; app&gt; src&gt; main&gt; res中创建一个可绘制文件夹并删除该文件夹中的所有图像。在iOS上,您可以删除ios&gt; Appname&gt; Images.xcassets。

中的所有图像

从那里,您可以将图片来源设置为frames[imageIndex],其中{uri: this.state.imageFile}是不带文件扩展名的字符串,您可以动态更改它们,而无需this.state.imageFile每个文件。