This sample application has been developed by Streamezzo.
It is a jackpot (fruit machine).

<%@page import="com.streamezzo.odp.slidingcarousel2d.SlidingCarousel2DConstants" %>
<%@page import="com.streamezzo.components.texttobitmap.TextToBitmap" %>
<%@page import="com.streamezzo.odp.adaptation.image.ImageResult" %>
<%@page import="com.streamezzo.odp.adaptation.AdaptationUtils" %>
<%@page import="com.streamezzo.odp.adaptation.layout.LayoutDebugUtils" %>
<%@page import="com.streamezzo.odp.adaptation.skin.Skin" %>
<%@page import="com.streamezzo.odp.adaptation.layout.Container" %>
<%@page import="com.streamezzo.odp.connector.AdaptationTransaction" %>
<%@page import="com.streamezzo.odp.connector.StzConnectorsManager" %>
<%@page import="com.streamezzo.odp.connector.AdaptationConnector" %>
<%@page import="com.streamezzo.odp.utils.RequestParameterContext" %>
<%@page import="com.streamezzo.odp.utils.ShapeUtils" %>
<%@page import="com.streamezzo.odp.slidingcarousel2d.SlidingCarousel2DParameters" %>
<%@page import="com.streamezzo.odp.slidingcarousel2d.SlidingCarousel2DItem" %>
<%!
final static boolean DEBUG = false;
final static int nbVisibleItems = 3;
final static String[] NAMES = new String[]{"Watermelon", "Seven", "Lemon", "Bell", "Plum", "Bar", "Orange", "Cherry"};
final static int nbItems = NAMES.length;
public static String vec2intToString(int[] v) {
return v[0] + " " + v[1];
}
%>
<%
int screenWidth = userAgent.getScreenWidth();
int screenHeight = userAgent.getScreenHeight();
%>
" resolution="1"
encodingType="0" colorBits="8" lengthBits="16" idBits="16"
scaleBits="15"/>
import script.*;
import script.util.*;
0)
{
bet++;
credits--;
updateValues();
}
}
public void updateValues()
{
DomApi.setTextString("CreditValueTxt", ""+credits);
DomApi.setTextString("BetValueTxt", ""+bet);
}
public void checkIfYouWin()
{
String s1 = script.util.DomApi.getTextString("C1FocusedItemName");
String s2 = script.util.DomApi.getTextString("C2FocusedItemName");
String s3 = script.util.DomApi.getTextString("C3FocusedItemName");
int win = 0;
// Three match
if((s1.compareTo(s2) == 0) && (s1.compareTo(s3) == 0)){
win = bet * 100;
}
else{
// Two match
if((s1.compareTo(s2) == 0) || (s1.compareTo(s3) == 0) || (s2.compareTo(s3) == 0)){
win = bet * 10;
}
}
if(win != 0){
credits += win;
DomApi.setTextString("YouWinText", "YOU WIN "+win+" $ !");
DomApi.startNode("ShowYouWinText");
}
bet = 1;
if(credits == 0)
{
DomApi.startNode("GameOver");
}else{
credits--;
updateValues();
}
}
]]>
![cdata[>
<%
AdaptationConnector adaptationConnector = StzConnectorsManager.getAdaptationConnector(stzRequest.getService(), /*Cache TTL*/0);
AdaptationTransaction tx = (AdaptationTransaction) adaptationConnector.beginTransaction(stzRequest, "jackpot", "jackpot");
Skin skin = tx.getSkin();
Container rootContainer = tx.getRootContainer(/*Layout Id*/"layout");
// Add carousel images and apply the resizing policies
ImageResult unfocused = null, focused = null;
for (int i = 0; i < NAMES.length; i++) {
focused = AdaptationUtils.addImage(NAMES[i].toLowerCase(), /*Cache TTL*/360000, stzRequest, authoring, skin, rootContainer);
unfocused = AdaptationUtils.addImage(NAMES[i].toLowerCase() + "_small", /*Cache TTL*/360000, stzRequest, authoring, skin, rootContainer);
}
final int[] unfocusedImagesSize = new int[]{unfocused.getWidth(), unfocused.getHeight()};
final int[] focusedImagesSize = new int[]{focused.getWidth(), focused.getHeight()};
float carouselHeight = rootContainer.getChildByIdRecurs("Carousel1").getHeight();
int iconsSpacing = (int) ((carouselHeight - (nbVisibleItems - 1) * unfocusedImagesSize[1] - focusedImagesSize[1]) / (nbVisibleItems - 1));
%>
<%
for (int i = 0; i < NAMES.length; i++) {
%>
"
streamID="<%= NAMES[i].toLowerCase() + "_small" %>"/>
"
streamID="<%= NAMES[i].toLowerCase() %>"/>
<%
}
%>
<%
Container betLabel = rootContainer.getChildByIdRecurs("BetLabel");
Container creditsLabel = rootContainer.getChildByIdRecurs("CreditLabel");
TextToBitmap ttb = new TextToBitmap();
ttb.setFontColor(skin.getColor("ScoresLabelColor").getColor());
ttb.setTextBounds(betLabel.getBounds());
ttb.setFontFace(TextToBitmap.Verdana);
InputStream text1 = ttb.generateBitmapInputStreamFromText("Credits :");
authoring.addImage("creditsLabel", text1, 0);
int fontSize = ttb.computeFontSizeForText("Credits :");
ttb = new TextToBitmap();
ttb.setFontColor(skin.getColor("ScoresLabelColor").getColor());
ttb.setFontSize(fontSize);
ttb.setFontFace(TextToBitmap.Verdana);
InputStream text2 = ttb.generateBitmapInputStreamFromText("Bet :");
authoring.addImage("betLabel", text2, 0);
%>
<%
Container betValue = rootContainer.getChildByIdRecurs("BetValue");
Container creditValue = rootContainer.getChildByIdRecurs("CreditValue");
%>
"
displayRect="<%= betValue.getSize() %>"
horizAlign="CENTERED" vertAlign="MIDDLE"
size="LARGE" style="BOLD"/>
"
displayRect="<%= creditValue.getSize() %>"
horizAlign="CENTERED" vertAlign="MIDDLE"
size="LARGE" style="BOLD"/>
<%
Container scoresbox = rootContainer.getChildByIdRecurs("Scores");
%>
"
displayRect="<%= scoresbox.getSize() %>" wrap="true"
size="LARGE" style="BOLD" horizAlign="CENTERED"
vertAlign="MIDDLE"/>
<%
ImageResult spinResized = AdaptationUtils.addImage("spin-off", /*Cache TTL*/360000, stzRequest, authoring, skin, rootContainer);
AdaptationUtils.addImage("spin-on", /*Cache TTL*/360000, stzRequest, authoring, skin, rootContainer);
AdaptationUtils.addImage("bet-off", /*Cache TTL*/360000, stzRequest, authoring, skin, rootContainer);
AdaptationUtils.addImage("bet-on", /*Cache TTL*/360000, stzRequest, authoring, skin, rootContainer);
%>
<%
Container betButton = rootContainer.getChildByIdRecurs("BetButton");
Container spinButton = rootContainer.getChildByIdRecurs("SpinButton");
ttb = new TextToBitmap();
ttb.setFontColor(skin.getColor("ButtonsLabelColor").getColor());
ttb.setTextBounds((int) (spinResized.getWidth() * 0.8f), (int) (spinResized.getHeight() * 0.8f));
ttb.setFontFace(TextToBitmap.Verdana);
ttb.setFontStyle(TextToBitmap.BOLD);
text1 = ttb.generateBitmapInputStreamFromText("(2) Spin");
authoring.addImage("spinButtonLabel", text1, 0);
fontSize = ttb.computeFontSizeForText("(2) Spin");
ttb = new TextToBitmap();
ttb.setFontColor(skin.getColor("ButtonsLabelColor").getColor());
ttb.setFontSize(fontSize);
ttb.setFontFace(TextToBitmap.Verdana);
ttb.setFontStyle(TextToBitmap.BOLD);
text2 = ttb.generateBitmapInputStreamFromText("(1) Bet");
authoring.addImage("betButtonLabel", text2, 0);
%>
<%
Container buttonsBox = rootContainer.getChildByIdRecurs("Buttons");
%>
"
displayRect="<%= buttonsBox.getSize() %>" wrap="true"
size="LARGE" style="BOLD" horizAlign="CENTERED"
vertAlign="MIDDLE"/>
<%
Container carouselsBox = rootContainer.getChildByIdRecurs("Carousels");
Container carousel1 = rootContainer.getChildByIdRecurs("Carousel1");
Container carousel2 = rootContainer.getChildByIdRecurs("Carousel2");
Container carousel3 = rootContainer.getChildByIdRecurs("Carousel3");
%>
<%
for (int i = 0; i < NAMES.length; i++) {
%>
">
">
">
<%
}
%>
<%
// Items
SlidingCarousel2DItem[] c1Items = new SlidingCarousel2DItem[nbItems];
SlidingCarousel2DItem[] c2Items = new SlidingCarousel2DItem[nbItems];
SlidingCarousel2DItem[] c3Items = new SlidingCarousel2DItem[nbItems];
for (int i = 0; i < nbItems; i++) {
SlidingCarousel2DItem c1Item = new SlidingCarousel2DItem();
c1Item.setImageFocusedDef("Global:IconFocused_" + i);
c1Item.setImageUnfocusedDef("Global:IconUnfocused_" + i);
c1Item.setOnFocusCallback("Global:MyFocus_C1_" + i);
c1Items[i] = c1Item;
SlidingCarousel2DItem c2Item = new SlidingCarousel2DItem();
c2Item.setImageFocusedDef("Global:IconFocused_" + i);
c2Item.setImageUnfocusedDef("Global:IconUnfocused_" + i);
c2Item.setOnFocusCallback("Global:MyFocus_C2_" + i);
c2Items[i] = c2Item;
SlidingCarousel2DItem c3Item = new SlidingCarousel2DItem();
c3Item.setImageFocusedDef("Global:IconFocused_" + i);
c3Item.setImageUnfocusedDef("Global:IconUnfocused_" + i);
c3Item.setOnFocusCallback("Global:MyFocus_C3_" + i);
c3Items[i] = c3Item;
}
%>
<%
// RequestParameterContext
RequestParameterContext context = new RequestParameterContext();
// General
context.addParameter(SlidingCarousel2DParameters.INSERT_TARGET, "Global:C1Anchor");
context.addParameter(SlidingCarousel2DParameters.DEF_PREFIX, "C1");
// Items
context.addParameter(SlidingCarousel2DParameters.ITEMS, c1Items);
// Display
context.addParameter(SlidingCarousel2DParameters.ICON_UNFOCUSED_SIZE, vec2intToString(unfocusedImagesSize));
context.addParameter(SlidingCarousel2DParameters.ICON_FOCUSED_SIZE, vec2intToString(focusedImagesSize));
context.addParameter(SlidingCarousel2DParameters.NB_ICONS_DISPLAYED, nbVisibleItems);
context.addParameter(SlidingCarousel2DParameters.PADDING, iconsSpacing);
context.addParameter(SlidingCarousel2DParameters.WHEEL_EFFECT_WEIGHT, 2);
context.addParameter(SlidingCarousel2DParameters.FIRST_FOCUSED_ITEM_INDEX, 0);
context.addParameter(SlidingCarousel2DParameters.IS_HORIZONTAL, false);
context.addParameter(SlidingCarousel2DParameters.AUTO_FOCUS_ON_CLICK, false);
context.addParameter(SlidingCarousel2DParameters.CALLBACK_FOCUS_EVEN_IF_NO_CHANGE, true);
context.addParameter(SlidingCarousel2DParameters.NAVIGATION_MODE, SlidingCarousel2DConstants.KEYPAD);
context.addParameter(SlidingCarousel2DParameters.RANDOM_LAUNCH_COMMAND, "Global:LaunchCarousel1");
// Setup
context.setup(stzRequest);
%>
<%
context.clean(stzRequest);
%>
<%
// RequestParameterContext
context = new RequestParameterContext();
// General
context.addParameter(SlidingCarousel2DParameters.INSERT_TARGET, "Global:C2Anchor");
context.addParameter(SlidingCarousel2DParameters.DEF_PREFIX, "C2");
// Items
context.addParameter(SlidingCarousel2DParameters.ITEMS, c2Items);
// Display
context.addParameter(SlidingCarousel2DParameters.ICON_UNFOCUSED_SIZE, vec2intToString(unfocusedImagesSize));
context.addParameter(SlidingCarousel2DParameters.ICON_FOCUSED_SIZE, vec2intToString(focusedImagesSize));
context.addParameter(SlidingCarousel2DParameters.NB_ICONS_DISPLAYED, nbVisibleItems);
context.addParameter(SlidingCarousel2DParameters.PADDING, iconsSpacing);
context.addParameter(SlidingCarousel2DParameters.WHEEL_EFFECT_WEIGHT, 2);
context.addParameter(SlidingCarousel2DParameters.FIRST_FOCUSED_ITEM_INDEX, 1);
context.addParameter(SlidingCarousel2DParameters.IS_HORIZONTAL, false);
context.addParameter(SlidingCarousel2DParameters.AUTO_FOCUS_ON_CLICK, false);
context.addParameter(SlidingCarousel2DParameters.CALLBACK_FOCUS_EVEN_IF_NO_CHANGE, true);
context.addParameter(SlidingCarousel2DParameters.NAVIGATION_MODE, SlidingCarousel2DConstants.KEYPAD);
context.addParameter(SlidingCarousel2DParameters.RANDOM_LAUNCH_COMMAND, "Global:LaunchCarousel2");
// Setup
context.setup(stzRequest);
%>
<%
context.clean(stzRequest);
%>
<%
// RequestParameterContext
context = new RequestParameterContext();
// General
context.addParameter(SlidingCarousel2DParameters.INSERT_TARGET, "Global:C3Anchor");
context.addParameter(SlidingCarousel2DParameters.DEF_PREFIX, "C3");
// Items
context.addParameter(SlidingCarousel2DParameters.ITEMS, c3Items);
// Display
context.addParameter(SlidingCarousel2DParameters.ICON_UNFOCUSED_SIZE, vec2intToString(unfocusedImagesSize));
context.addParameter(SlidingCarousel2DParameters.ICON_FOCUSED_SIZE, vec2intToString(focusedImagesSize));
context.addParameter(SlidingCarousel2DParameters.NB_ICONS_DISPLAYED, nbVisibleItems);
context.addParameter(SlidingCarousel2DParameters.PADDING, iconsSpacing);
context.addParameter(SlidingCarousel2DParameters.WHEEL_EFFECT_WEIGHT, 2);
context.addParameter(SlidingCarousel2DParameters.FIRST_FOCUSED_ITEM_INDEX, 2);
context.addParameter(SlidingCarousel2DParameters.IS_HORIZONTAL, false);
context.addParameter(SlidingCarousel2DParameters.AUTO_FOCUS_ON_CLICK, false);
context.addParameter(SlidingCarousel2DParameters.CALLBACK_FOCUS_EVEN_IF_NO_CHANGE, true);
context.addParameter(SlidingCarousel2DParameters.NAVIGATION_MODE, SlidingCarousel2DConstants.KEYPAD);
context.addParameter(SlidingCarousel2DParameters.RANDOM_LAUNCH_COMMAND, "Global:LaunchCarousel3");
// Setup
context.setup(stzRequest);
%>
<%
context.clean(stzRequest);
%>
<%
if (DEBUG) {
%>
<%
LayoutDebugUtils.debugLayoutAlpha(authoring, stzRequest, currentTransform, rootContainer, screenWidth, screenHeight, 0.5f);
%>
<%
}
%>
| Attachment | Size |
|---|---|
| Jackpot.swz | 719.64 KB |