2016-03-08 4 views
1

Я работаю на простом Марио бокового скроллер, и когда я пытаюсь вызвать прокрутки() метода Объектов Scrolling, я получаю Не могу найти символ - метод прокрутку () ошибка брошенный. Пожалуйста помоги!
Вот файл SubworldНе может найти символ - метод прокрутку()

import greenfoot.*; 
import java.util.ArrayList; 
/** 
* Write a description of class MarioWorld here. 
* 
* @author (your name) 
* @version (a version number or a 


public class MarioWorld extends World 
{ 
    ArrayList<MovingActor> moving = new ArrayList<MovingActor>(); 
    ArrayList<Actor> things = new ArrayList<Actor>(); 
    Message messagebox = new Message(""); 
    /** 
    * Constructor for objects of class MarioWorld. 
    * 
    */ 
    public MarioWorld() 
    { 
     super(800, 600, 1); 
     for(int i = 0; i < 40; i++) 
      { 
       things.add(new GreenApple()); 
       things.add(new Shamrock()); 

      } 
      for(int i = 0; i<8;i++) 
       things.add(new Brick()); 
      moving.add(new Mario()); 
      for(int r = 0;r < things.size();r++) 
      { 
       addObject(things.get(r),Greenfoot.getRandomNumber(800),Greenfoot.getRandomNumber(600)); 
      } 
    } 
    public void act() 
    { 

     for(int i = 0;i < things.size();i++) 
      { 
       things.get(i).scroll(); 
      } 
      addObject(moving.get(0),15,300); 
      moving.get(0).worldact(); 
    } 


} 
` 

Вот один из 3-х классов прокрутки (они идентичны по названию/изображений, кроме

import greenfoot.*; 
public class Shamrock extends Actor implements Scrollable 
{ 
    /** 
    * Act - do whatever the Shamrock wants to do. This method is called whenever 
    * the 'Act' or 'Run' button gets pressed in the environment. 
    */ 

    public Actor worldact() 
    { 
     scroll(); 
     return this; 
    } 
    public void scroll() 
    { 
     int x = getX(); 
     int y = getY(); 
     if(x <= 0) 
      x = 800; 
     x -= 6; 
     setLocation(x,y); 

    } 
} 

Вот интерфейс 'SCROLLABLE'

import greenfoot.*; 

public interface Scrollable 
{ 
public void scroll(); 
} 
+2

Я не буду пытаться ответить, но я думаю, что вы, возможно, придется явно литые, например '((Shamrock) things.get (i)). Scroll();' –

+0

- это актер класса tht, реализующий прокручиваемый? –

ответ

0

Здесь moving является object из ArrayList не Shamrock, так что вы можете вызвать метод только arraylist класса с moving объекта как add()remove().

Здесь ArrayList is generic type Safed ArrayList . So, you need to remove the объект from the arraylist then only try to apply method Scroll() `

Используйте этот код

((Shamrock)things.get(i)).scroll(); 

вместо things.get(i).scroll();

0

things - это список Actor. Actor не реализует Scollable, но Shamrock. things.get(i) возвращает Actor который не имеет Scollable.scroll(). Вам нужно отдать его либо Shamrock, либо Scollable. Или вы можете сделать things список Shamrock.

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