2014-10-26 1 views
0

Я пытаюсь открыть изображение, которое находится на пути «sketchfolder/data/1024x768/gulli2.png». Он отлично работает на Windows, но не работает на Android и дает ошибку. Здесь ошибка:Ошибка «Не удалось найти изображение» в обработке Android

Could not find the image \1024x768\gulli2.png. FATAL EXCEPTION: Animation Thread Process: processing.test.exercise_5_3_noisechain, PID: 11878 java.lang.NullPointerException at processing.test.exercise_5_3_noisechain.Exercise_5_3_NoiseChain$Gulli.(Exercise_5_3_NoiseChain.java:112) at processing.test.exercise_5_3_noisechain.Exercise_5_3_NoiseChain.setup(Exercise_5_3_NoiseChain.java:37) at processing.core.PApplet.handleDraw(Unknown Source) at processing.core.PGraphicsAndroid2D.requestDraw(Unknown Source) at processing.core.PApplet.run(Unknown Source) at java.lang.Thread.run(Thread.java:841)

код Я пытаюсь:

class Gulli { 
    Body body; 
    float w; 
    float h; 
    float angle; 
    PImage img; 

    Gulli(float x_, float y_) { 
    float x = x_; 
    float y = y_; 
    w = (float)(width*2.2/100.0); 
    h = w/2; 
    img = loadImage("\\1024x768\\gulli2.png"); 
    img.loadPixels(); 
    img.resize((int)w*2,0); 
    img.updatePixels(); 
    angle = 0; 
    makeBody(new Vec2(x, y), w, h, angle); 
    } 

    void makeBody(Vec2 center, float w_, float h_, float a) { 
    BodyDef bd = new BodyDef(); 
    bd.position.set(box2d.coordPixelsToWorld(center)); 
    bd.setAngularVelocity(a); 
    bd.type = BodyType.DYNAMIC; 
    bd.bullet = true; 
    body = box2d.createBody(bd); 
    PolygonShape sd = new PolygonShape(); 
    Vec2 []vertices = new Vec2[6]; 
    vertices[0] = new Vec2(box2d.scalarPixelsToWorld(w), 0); 
    vertices[1] = new Vec2(box2d.scalarPixelsToWorld(h), box2d.scalarPixelsToWorld(h/3)); 
    vertices[2] = new Vec2(box2d.scalarPixelsToWorld(-h), box2d.scalarPixelsToWorld(h/3)); 
    vertices[3] = new Vec2(box2d.scalarPixelsToWorld(-w), 0); 
    vertices[4] = new Vec2(box2d.scalarPixelsToWorld(-h), box2d.scalarPixelsToWorld(-h/3)); 
    vertices[5] = new Vec2(box2d.scalarPixelsToWorld(h), box2d.scalarPixelsToWorld(-h/3)); 
    sd.set(vertices, vertices.length); 
    FixtureDef fd = new FixtureDef(); 
    fd.shape = sd; 
    fd.density = 4.0; 
    fd.friction = 0.6; 
    fd.restitution = 0.3; 
    body.createFixture(fd); 
    bd.allowSleep = false; 
    body.setUserData(this); 
    } 

    void display() { 
    Vec2 pos = box2d.getBodyPixelCoord(body); 
    float a = body.getAngle(); 
    Fixture f = body.getFixtureList(); 
    PolygonShape ps = (PolygonShape) f.getShape(); 
    pushMatrix(); 
    translate(pos.x, pos.y); 
    rotate(-a); 
    image(img, 0, 0); 
    popMatrix(); 
    } 
} 


import shiffman.box2d.*; 
import org.jbox2d.collision.shapes.*; 
import org.jbox2d.common.*; 
import org.jbox2d.dynamics.*; 

Box2DProcessing box2d; 
Gulli gulli; 

void setup() { 
// size(1024, 768); // turn on for windows 
    box2d = new Box2DProcessing(this); 
    box2d.createWorld(); 
    gulli = new Gulli((float)width*15.0/100.0, (float)height*95.0/100.0);  
    smooth(); 
} 

void draw() { 
    gulli.display(); 
    box2d.step(); 
} 

Plz помочь .... Спасибо ..

+0

Где находится линия 12 Exercise_5_3_NoiseChain.java? –

+0

извините мою ошибку. я забыл упомянуть функцию display() gulli. Я уже упоминал об этом. PLZ проверить сейчас. спасибо :) – user3026927

+0

Что такое линия 12? –

ответ

0

Ваш журнал показывает ошибку NullPointerException, это означает, что вы пытаясь указать на несуществующий образ. Попробуйте включить весь путь. И без двойных слэшей "//". Если вы работаете с форматами URI, возможно, элемент управления не поддерживает эти форматы. Если это так, сначала загрузите изображение, а затем загрузите его.

+0

, потому что вы не помещаете изображение с именем «gulli2.png» в свою папку «данных» эскиза. вы можете использовать любое изображение небольшого размера для проверки цели. спасибо за Ваш ответ :) – user3026927

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