Поддержка псевдонима для спрайта

This commit is contained in:
Victor 2015-04-16 21:29:38 +03:00
parent e728a91ff5
commit 0a2718a3fd
4 changed files with 13 additions and 5 deletions

View File

@ -41,6 +41,7 @@ public final class Lexer {
KEYWORDS.put("bg", TokenType.BG); KEYWORDS.put("bg", TokenType.BG);
KEYWORDS.put("cg", TokenType.CG); KEYWORDS.put("cg", TokenType.CG);
KEYWORDS.put("at", TokenType.AT); KEYWORDS.put("at", TokenType.AT);
KEYWORDS.put("as", TokenType.AS);
KEYWORDS.put("window", TokenType.WINDOW); KEYWORDS.put("window", TokenType.WINDOW);
KEYWORDS.put("hide", TokenType.HIDE); KEYWORDS.put("hide", TokenType.HIDE);
KEYWORDS.put("show", TokenType.SHOW); KEYWORDS.put("show", TokenType.SHOW);

View File

@ -271,8 +271,13 @@ public final class Parser {
if (match(TokenType.AT)) { if (match(TokenType.AT)) {
position = consume(TokenType.WORD).getText(); position = consume(TokenType.WORD).getText();
} }
// Псевдоним (для показа одно и того же спрайта в разных местах)
String alias = "";
if (match(TokenType.AS)) {
alias = consume(TokenType.WORD).getText();
}
matchWithEffect(); matchWithEffect();
ViewActivity.getInstance().sprite(whoid, params, position); ViewActivity.getInstance().sprite(whoid, params, position, alias);
return false; return false;
} }

View File

@ -43,6 +43,7 @@ public enum TokenType {
SHOW, SHOW,
AT, AT,
AS,
WITH, WITH,
MENU, MENU,

View File

@ -202,13 +202,14 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
spriteInContainer.clear(); spriteInContainer.clear();
} }
public void sprite(String whoid, String params, String position) { public void sprite(String whoid, String params, String position, String alias) {
ImageView img; ImageView img;
if (spriteInContainer.containsKey(whoid)) { final String key = TextUtils.isEmpty(alias) ? whoid : alias;
img = spriteInContainer.get(whoid); if (spriteInContainer.containsKey(key)) {
img = spriteInContainer.get(key);
} else { } else {
img = new ImageView(this); img = new ImageView(this);
spriteInContainer.put(whoid, img); spriteInContainer.put(key, img);
} }
final FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams( final FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT); FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT);