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

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("cg", TokenType.CG);
KEYWORDS.put("at", TokenType.AT);
KEYWORDS.put("as", TokenType.AS);
KEYWORDS.put("window", TokenType.WINDOW);
KEYWORDS.put("hide", TokenType.HIDE);
KEYWORDS.put("show", TokenType.SHOW);

View File

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

View File

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

View File

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