Többnyelvű alkalmazás

Valószínűleg minden alkalmazás számára előny, ha a kezelőfelület a felhasználó számára automatikusan a saját nyelvén jelenik meg. Ezt például megállapíthatjuk onnan, hogy megnézzük a felhasználó gépének nyelvi beállításait, amit a CultureInfo.CurrentCulture.Name árul el nekünk, majd betöltjük az ennek a kódnak megfelelő nevű mappában lévő Resources.resw állományt amely NameValue – Comment” értékhármasokból áll. Ezekben tároljuk a különböző nyelvekhez tartozó stringek nevét és értékét.

Az automatikus betöltést a ResourceLoader végzi, melynek a GetSrting(“Name“); metódusával visszaadhatjuk a string értékét, amit mondjuk betöltünk egy TextBlock.Text attribútumába.

Ha viszont a jelenlegi nyelvi beállítások nem megfelelőek és a felhasználó más nyelven szeretné használni az alkalmazást, arra is lehetőséget kell adni, például egy egyszerű combobox segítségével, ahol az comboboxitemek “value” attribútumába írva a nyelvi kódot, átadhatjuk az kiválasztani kívánt nyelvet, és ezzel frissítjük a felhasználó felületet például a SelectionChanged eseménykezelésében. (Ha ez nem passzol az alkalmazás felületére, lehetőség van megvalósítani az alkalmazás Beállításainál a CharmBaron is.)

Ekkor a nyelvet egy kontextusba betöltve, a megfelelő elérési útvonalat megadva, annak GetValue(“Name“, context).ValueAsString; metódusával kaphatjuk meg a kívánt string értékét.

Fontos szem előtt tartani, hogy ha valaki egyéb mértékegységeket is szeretne használni, akkor nem elég csak a nyelvet meghatározni, hanem az országot/régiót is. Például “en” kódú, vagyis angolul beszélő ország több van, de nem mindegyik használ amerikai (“en-US”) mértékeket.

Rajzolás

Sziasztok!

Most megnézzük hogyan is lehet rajzolni a canvasra html5-ben javascript segítségével.

Először is hozzunk létre egy új projektet a szokásos módon majd nyissuk meg a default.html  fájlt és adjuk hozzá a következő sort a body-hoz:

<canvas id=”canvas”></canvas>

Ha ezzel megvagyunk a default.js fájlra lesz szükségünk amihez adjuk hozzá az initialize() függvényt az „app.oncheckpoint = function (args) {“ sor elé:

function initialize(){

}

A függvényben akkor inicializáljuk is a canvasunkat:

canvas = document.getElementById(“canvas”);
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
context = canvas.getContext(“2d”);

Ezzel letre is hoztunk egy képernyő mértű rajzterületet amire rajzolhatunk különböző dolgokat pl: vonalat téglalalpot…

Néhány példa:

Vonal rajzlása:

context.strokeStyle = ‘#0f0’; // a vonal színe
context.moveTo(20, 20); //innen indul a vonal rajzolása
context.lineTo(100, 30); //ide húzzuk a vonalat
context.lineWidth = 3; //vonalvastagság
context.stroke(); //végül a rajzolás

kitöltött téglalap rajzolása:

context.fillStyle = ‘#00f’;
context.fillRect(600, 50, 100, 200);
context.lineWidth = 5;
context.stroke();

görbe rajzolása:

//gorbe rajzolasa

context.moveTo(20, 50);
context.quadraticCurveTo(190, 700, 400, 50);
context.lineWidth = 1;
context.stroke();

Végül ahhoz, hogy múködjön is a még egy dologra less szükségünk mégpedig meg kell hívnunk az inicialize() függvényt ezt pedig a következőképp tehetjük meg:

document.addEventListener(“DOMContentLoaded”, initialize, false);

ezt a sort kell betennünk mondjuk az “app.start();” sor elé.

Ha meindennel megvagyunk futtasuk a programunkat és ha minden jól megy akkor a következőnek kell megjelennie elöttünk:

a forrásfájl letölthető innen: CanvasDemo1

Üdv.: Balázs

Alapvető vezérlők

Osztályhierarchia: A legtöbb fejlesztői környezetben egyértelműen azonosíthatók a vezérlőelemek. A silverlight-ban nem elég egyértelmű, ugyanis sok elemet is kezelhetünk vezérlőként. A hierarchia legalján a DependencyObject osztály áll. Fő feladata az adatkötés. Második szinten a UIElement áll. Ez felel a vizuális megjelenítésért. UIElement-ből származik a FrameWorkElement, ami lényegében kiterjeszti a fölötte lévők képességeit. Ilyen például a TextBlock osztály. Erre nem vonatkozik a VerticalAligment és a HorizontalAligment tulajdonságok. Csak a Control osztályból közvetlenül származhatnak. A FrameWorkElement-ből származik a Panel osztály is. A hierarchia legalján található a Control osztály. A vezérlők őse.

Layout Management – Silverlight

Amikor Layout Management-ről beszélünk, akkor az alkalmazásunk felhasználói felületén megjelenített vezérlőelemek elrendezéséről beszélünk.

Pozicionálás: Az abszolút és a dinamikus pozicionálást támogatja. Leíró kód áttekinthető. Minden silverlight program egy konténer elemre építkezik. A konténerek a vezérlőelemeket tárolja. Több féle vezérlőelem létezik pl.: Canvas,Grid. Amennyiben nem adunk meg neki paramétereket, akkor kitöltik a rendelkezésükre álló teret, ez alól egy kivétel van, mégpedig ha a konténer elem a canvas. Pozíciók finomhangolására is lehetőség van. Minden vezérlőben másképpen történik. Létezik egyszerűbb módszer is. A VerticalAligment és a HorizontalAligment tulajdonságpáros.

Grid: A legsokoldalúbb és a leggyakrabban használt konténer. Tetszőleges számú sor és oszlop definiálását. Alapértelmezés szerint egy oszlop és sor van definiálva. Többet szeretnénk, akkor a RowDefinition és ColumnDefinition objektumot kell elkészíteni.A ShowGridLines segítségével láthatóvá tehetjük az oszlopok és sorok elválasztó vonalait.

Canvas: lehetővé teszi, hogy explicit módon koordináták segítségével pozicionáljuk vezérlőinket. Nem veszi figyelembe a böngésző méretét. Az x/y koordinátákat a Canvas.Left illetve a Canvas.Top attached propertykkel állítjuk be. Itt különféle beállításokat végezhetünk el. ZIndex segítségével beállíthatjuk például,hogy a vezérlő eltakarhat-e egy másikat.

Kezdeti lépések

Helló,

Egy kis emlékeztető: Célok

Tehát, ahhoz hogy wondow 8 alatt fejlesszünk ’windows store app’ stílusú alkalmazásokat a következő dolgokra lesz szükségünk:

Windows 8

Visual studio 2012 for win8.

Ha ezek telepítésével megvagyunk kezdőthet is a fejlesztés :).

Nyissuk meg a vs2012-őt és hozzunk létre egy új projektet(FILE->new->project), ezután a  templates-ek küzül válasszuk a JavaScript-et itt pedig a Blank App, állítsuk be a projekt helyét és nevezzük el majd ok. Ha minden jól megy létre is jött a projektünk.

A projekt solution-ében a főbb dolgok a következők:

References (windows library for JavaScript)

css mappa: kezdetben a defaultl.css-t tartalmazza, ide menthetjük a különböző css fájljainkat.

images mappa:  kezdetben itt a programunkban talalható kepek vannak például az alkalmazás indulásánál mi jelenjen meg stb. Ezek a fájlok felül írásával könnyedén cseréljetjük ezeket(érdemes odafigyelni hogy azonos felbontású és méretű képekkel írjuk felól a meglévőket)

js mappa: kezdetben a default.js-t tartalmazza ez fogja indítani az alkalmazásunkat

default.html: (fentebb láthtjuk a tartalmát),A WinJS references részt érdemes minden html oldlunkba bemásolni a References részeit „incloudolja”, itt állíthatjuk monjuk az alkalmazásunk stílusát sötétre vagy világosra az „ui-dark.css”, vagy „ui-light.css” segítségével. Ez után saját referenciáinkat is hozzáadjuk jelen esetben a default.css-t és default.js-t.

Ha mindennel megvagyunk futtasuk a programot, ha még nincs tabletünk (ami jelenleg elég valószínű) akkor két lehetőségünk van a futtatásra, futtathatjuk a saját gépünkön(local machine) vagy szimulátoron (Simulator).

Ha elindítottuk az alkalmazásunkat a következő fog megjelenni: „Content goes here”, ez van a html fájlunk body-jában.

Nos egyenlőre ennyi hamarosan folyt. köv.

Üdv.: Balázs

Silverlight – Animációk

Silverlight animációk létrehozásának egyik legegyszerűbb módja a blend segítségével lehetséges. A blend erőssége az animációkban rejlik. Próba képpen megpróbálok animálni egy négyzetet, amely kék színből szürkévé váltzik. A négyzet kirajzolása viszonylag egyszerű feladat. Kitöltése is. Aki használt már Adobe Falsh-t annak nagyon ismerős kinézet, működés. Itt is megtalálható az idővonal, amelyben létrehozunk egy storyboardot. A z idővonalon beállíthatjuk az időkorlátokat valamint találhatunk az idővonal felett nyilakat amelyekkel elindíthatjuk az animációt, illetve ugrálhatunk a különböző storyboardok között.A feladatunk annyi volt scupán, hogy egy storyboard beszúrása után a négyzet színét olyan változtattam, amilyenre szerettem volna, helyben megtekintettem az eredményt és a szín sikeresen megváltozott. Ha sikerült megváltoztatni a színt, akkor próbálkozzunk meg mondjuk, hogy a négyzetből kört animáljon. Amennyiben ezzel is kész vagyunk próbáljunk olyan animációt létrehozni, amelyben gombbal indíthatjuk el az animációnkat. Hozzunk létre a button eszköz segítségével egy nyomógombot, melynek adjuk az “animáció indítása” nevet. Hozzunk létre egy ellipszis. Majd a timeline-on hozzunk létre storyboardot. 3-mat vagy akár többet is. Hozzunk létre egyet az 1ms-nél és húzzuk oda az ellipszis, majd a 2ms-hez is húzzuk oda.Elindítjuk az animációt láthatjuk ,hogy a kis ellipszisünk a megadott útvonalon mozog. Ekkor még semmi köze a gombhoz. Jelöljük ki a gombot, majd a kis villám ikonra kattintva előjön a gombhoz tartozó események megadása. Kattintsunk kétszer a Clickre. Előjön egy forráskód. Ennek a kódnak a “private void Button_Click(object sender, System.Windows.RoutedEventArgs e)” sora után írjuk be, hogy : sbAnim.Begin(); . Ezután, ha lefuttatjuk gombnyomásra indíthatjuk az animációnkat. A mai napba sajnos csak ennyi fért bele, de hamarosan újra jelentkezek!

Hangok hozzáadása

Kétféle hang van, folytonos háttérzene és effekt hang.

1. Hozzuk létre a megfelelő változókat
SoundEffect effect;
Song music;

2. A Content projekten belül helyezzük el a hangfájlokat. Célszerű egy új mappát létrehozni.

3. A LoadContent() metóduson belül töltsük be a hangokat
music = Content.Load<Song>( “Sound/gameMusic” );
effect = Content.Load<SoundEffect>( “Sound/laserFire” );

4. A háttérzenét még a LoadContent-ben elindítjuk
PlayMusic( music );

5. Ehhez a PlayMusic metódust létre kell hozni
private void PlayMusic(Song song) {
try {
MediaPlayer.Play( song );
MediaPlayer.IsRepeating = true;
} catch {
}
}

6. Az effekt hangot a megfelelő helyeken elindítjuk
effect.Play();

Szövegek megjelenítése

Sokszor szükséges, hogy a játék aktuális állását megjelenítsük.

1.  Hozzuk létre a következő adattagokat:
int score;
SpriteFont font;

2. Az Initialize() metóduson belül adunk egy kezdőértéket a score változónak

3. A Content projekten belül el kell helyeznünk a betűtípust leíró fájlt. Célszerű egy külön mappába tenni.

4. A LoadContent() metóduson belül betöltjük a betűtípust
font = Content.Load<SpriteFont>( “Fonts/gameFont” );

5. A score változóban tároljuk az aktuális pontszámot. Helyezzük el a megfelelő feltételek után a változó értékét módosító műveleteket.

6. A Draw() metóduson belül kirajzoljuk a szöveget a képernyőre
spriteBatch.DrawString( font, “score: ” + score, new Vector2( GraphicsDevice.Viewport.TitleSafeArea.X, GraphicsDevice.Viewport.TitleSafeArea.Y ), Color.White );

Játékos létrehozása

1. Hozzunk létre egy új XNA projektet, a típusa Windows Phone Game (4.0). Ilyenkor létrejön már a projektben egy Game1.cs nevű főosztály, ennek adhatunk valami beszédesebb nevet.

2. Hozzunk létre egy új osztályt, ez lesz a játékos.

3. Hozzáadjuk a játékos osztályhoz a szükséges adattagokat, és az ezek eléréséhez szükséges metódusokat.

4. A főosztályban létrehozzuk privát adattagként a játékos(oka)t.

5. Az Initialize() metóduson belül példányosítunk.

6. A LoadContent() metódus csak egyszer hívódik meg, itt helyezzük el a textúrák betöltéséhez szükséges utasításokat.

7. A Draw() metódusban hívjuk meg a kirajzoláshoz szükséges metódusokat.

8. A képernyő felbontását a főosztály konstruktorában állítjuk be.

9. Az Update() metódus magát a játékciklust reprezentálja.

Push Notification Service

Hello!

Ma egy Push Notification szerviz készítést mutatok be:

  • Hozzunk létre egy új Azure projektet, adjuk hozzá a WCF Service Web Role-t
  • Töröljük a létrehozott service-t majd adjunk hozzá egy új Silverlight-enabled WCF Service-t
  • Töröljük az alapból létrehozott metódust, majd hozzunk létre egy konstruktor és egy metódust amely elmenti a beregisztrált eszköz címét.Erre a címre küldünk egy tailMessage-t és egy toastMessage-t.
  • Az üzenetek létrehozásához töltsük le ezt majd importáljuk a programba a WindowsPhone.Recipes.Push.Messages.dll-t
  • Adjunk hozzá egy Wp7-es projektet majd ehhez adjuk meg Service Reference-ként a szervizünk címét
  • Egyszerű felületet hozzunk létre kell egy feliratkozás gomb meg egy leiratkozás gomb írjuk meg az click eseménykezelőjét (hozzuk létre a csatornát,kérjük el az üzenetket)

Forrás

Üdv:
Szmeti