15.01.2014 / 10:02 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| samodelkin (14.01.2014/06:21)Имеется массив int[] frameSequence ,уже созданный в конструкторе класса, скажите как пересоздать этот массив с другим количество элементов?int arr[] = new int[10];
//...
arr = Arrays.copyOf(arr, int newLength);
|
15.01.2014 / 11:39 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| Naik, спасибо, разобрался.
|
17.01.2014 / 06:56 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| Как сгенерировать случайное число от 15 до 20?
|
17.01.2014 / 07:24 | |
kda-spb Пользователь Сейчас: Offline
Имя: Дима Откуда: СПб,Колпино Регистрация: 24.11.2011
| samodelkin, Как же так: то ты во всех темах java предлагаеш всем помощь Пост #311821 , а сам основы спрашиваеш. Ответ на твой вопрос Пост #4937 Изменено kda-spb (17.01 / 07:26) (всего 2 раза) |
17.01.2014 / 08:40 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| kda-spb, спасибо, я читал на одном форуме что получить можно так: Random.nextInt(20)+15 ,но на самом деле там генерируются другие числа, я разобрался и получилось вот так: Random.nextInt(max-min)+min спасибо всем за помощь.
|
17.01.2014 / 12:58 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| При скролинге этго View наблюдается подтормаживание в начале "броска", но не всегда, иногда норм скролится. В чем ошибка?? Открыть спойлер Закрыть спойлер // class GameView.java
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Scroller;
import java.util.ArrayList;
import ua.naiksoftware.waronline.unit.Unit;
import filelog.Log;
public class GameView extends View {
private static final String tag = GameView.class.getName();
private Scroller scroller;
private GestureDetector gestureDetector;
// logic variables
private static GameManager manager;
private GameMap gameMap;
private boolean haveThree;
private ArrayList<Unit> units;
private Gamer currentGamer;
private boolean show;
// tech variables (scroll, select, etc)
private int w, h;
private int scrW, scrH;
private int scrollX, scrollY;
private int wTiles, hTiles;
// set used game manager for support different game modes
public static void preInit(GameManager m) {
manager = m;
}
public GameView(Context context) {
super(context);
init(context);
}
public GameView(Context context, AttributeSet attr) {
super(context, attr);
init(context);
}
public GameView(Context context, AttributeSet attr, int style) {
super(context, attr, style);
init(context);
}
private void init(Context context) {
scroller = new Scroller(context);
gestureDetector = new GestureDetector(context, new MyGestureListener());
setVerticalScrollBarEnabled(true);
setHorizontalScrollBarEnabled(true);
TypedArray a = context.obtainStyledAttributes(R.styleable.View);
initializeScrollbars(a);
a.recycle();
gameMap = manager.getGameMap();
haveThree = manager.haveThreeGamers();
units = manager.getUnits();
setCurrentGamer(manager.getCurrentGamer());
wTiles = gameMap.getXTileCount();
hTiles = gameMap.getYTileCount();
w = wTiles * Tile.TILE_SIZE;
h = hTiles * Tile.TILE_SIZE;
calcVisibilityForAll();
show = true;
}
@Override
protected void onDraw(Canvas canvas) {
if (show) {
int startXid = scrollX / Tile.TILE_SIZE;
int startYid = scrollY / Tile.TILE_SIZE;
int endXid = scrW / Tile.TILE_SIZE + startXid + 2;
int endYid = scrH / Tile.TILE_SIZE + startYid + 2;
if (endXid > wTiles) {
endXid = wTiles;
}
if (endYid > hTiles) {
endYid = hTiles;
}
gameMap.draw(canvas, startXid, startYid, endXid, endYid);
for (Unit unit: units) {
if (gameMap.isVisible(unit.getX(), unit.getY())) {
unit.draw(canvas);
}
}
} else {
canvas.drawColor(0);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//Log.d(tag, "onTouchEvent");
//awakenScrollBars();
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
if (!scroller.isFinished()) {
scroller.abortAnimation();
}
}
gestureDetector.onTouchEvent(event);
return true;
}
@Override
public void computeScroll() {
if (scroller.computeScrollOffset()) {
int x = scroller.getCurrX();
int y = scroller.getCurrY();
scrollTo(x, y);
if (scrollX != getScrollX() || scrollY != getScrollY()) {
onScrollChanged(getScrollX(), getScrollY(), scrollX, scrollY);
}
invalidate();
}
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
scrollX = l;
scrollY = t;
}
private class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanseX, float distanseY) {
if (scrollX + distanseX > 0 && scrollX + distanseX < w - getWidth()) {
scrollBy((int) distanseX, 0);
}
if (scrollY + distanseY > 0 && scrollY + distanseY < h - getHeight()) {
scrollBy(0, (int) distanseY);
}
return true;
}
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) {
//boolean scrollBeyondImage = ((getScrollX() < 0) || (getScrollX() > w) || (getScrollY() < 0) || (getScrollY() > h));
//if (scrollBeyondImage) return false;
scroller.fling(scrollX, scrollY, -(int) velocityX, -(int) velocityY,
0, w - scrW, 0, h - scrH);
return true;
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
int rawx = (int) e.getX() + scrollX;
int rawy = (int) e.getY() + scrollY;
postInvalidate();
return true;
}
};
public void selectNextUnit() {
}
private void calcVisibility(Unit unit) {
int look = unit.getLook();
int uX = unit.getX();
int uY = unit.getY();
int i2;
for (int i = -look;i <= look;i++) {
i2 = look - Math.abs(i);
if (i + uY > -1 && i + uY < hTiles) {
for (int j = -i2;j <= i2;j++) {
if (j + uX > -1 && j + uX < wTiles) {
gameMap.setVisible(j + uX, i + uY, unit.getGamer());
}
}
}
}
}
private void calcVisibilityForAll() {
for (Unit unit: units) {
calcVisibility(unit);
}
}
public void setCurrentGamer(Gamer g) {
currentGamer = g;
GameMap.setCurrentGamer(g);
}
public void setShow(boolean b) {
show = b;
invalidate();
}
@Override
protected int computeHorizontalScrollExtent() {
return scrW;
}
@Override
protected int computeHorizontalScrollOffset() {
return scrollX;
}
@Override
protected int computeHorizontalScrollRange() {
return w;
}
@Override
protected int computeVerticalScrollExtent() {
return scrH;
}
@Override
protected int computeVerticalScrollOffset() {
return scrollY;
}
@Override
protected int computeVerticalScrollRange() {
return h;
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
scrW = getWidth();
scrH = getHeight();
}
}
Изменено Naik (17.01 / 12:58) (всего 1 раз) |
17.01.2014 / 13:17 | |
aNNiMON Супервизор Сейчас: Online
Имя: Витёк Регистрация: 11.01.2010
| Naik, профайлер в руки и гоу тестить.
__________________
let live |
17.01.2014 / 14:06 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| aNNiMON, что оно такое, и как запустить? |
17.01.2014 / 14:27 | |
Bogdan-G Пользователь Сейчас: Offline
Имя: Богдан Откуда: Москва Регистрация: 13.02.2011
| Как компания гугл назвала свою модификацию явы на андроиде? возможно вопрос не совсем в тему. Изменено Bogdan-G (17.01 / 14:27) (всего 1 раз) |