Home

Реклама

Настроить

Предыдущие 20

12 Авг, 2009

(без темы)

Мягкими лапами снег подминая

Бесшумной походкой шагает весна

И ты этой ночью, уже засыпая

Увидишь, как падает с неба звезда

 

Увидишь как месяц вздрогнул на небе


17 Июл, 2009

Мой собственный блек-джек со шлюхами

 Вот В ЭТОМ АРХИВЕ все необходимое

/*
Ридми
компиляем
сначала создаем библиотеку изображений
# swfmill simple images.xml img.swf
использовать библиотеку из прошлого примера не пойдет - я добавил туда рубашку карт, без этого работать не будет
потом компиляем класс
#   haxe -swf test.swf -swf-version 8 -swf-lib img.swf Test.hx -swf-header 800:600:16:556832 -main Test

для своего удобства я сделал карты таким образом
113.jpg - первая цифра обозначает масть, две другие - саму карту
113 - это туз пикей
112 - король пикей
413 - туз бубей
412 - король бубей
и т.п. 
*/

import flash.MovieClip;
import haxe.Timer;
import flash.TextField;
import flash.TextFormat;

class Test
{
  static var main_mc : MovieClip; //главный клип
  static var cardHolder: MovieClip; //клип для "взять карты себе"
  static var stopMe: MovieClip; //клип для "передать ход компьютеру"
  static var timer : Timer; 
  static var Counter : Int;  //сколько карт сдано
  static var cards : Array<Int>; //массив колоды карт
  static var cardCounterP1 : Int;  //сколько карт на руках у игрока 1
  static var cardCounterP2 : Int; //и игрока 2
  static var pointsCounterP1 : Int; //какой номинал у игрока 1
  static var pointsCounterP2 : Int;  // и игрока 2
  static var pointsLabelP1 : TextField; //текстовое поле для отображения очков игрока 1
  static var pointsLabelP2 : TextField; //и игрока 2
  static var GameOver : TextField;  //текстовое поле для надписи гейм овер

// Залочить колоду кому нибудь из игроков
  static function blockPlayer(player1 : Int, ?player2 : Int)
  {
    //если указан только один игрок
    if(player2 == null)
    {
      if(player1 == 1)  //и это игрок #1
      {
        flash.Lib.current.cardHolder.onPress = ""; //то запретить выдачу карт ему - функция при нажатии не вызывается
      }
      else
      {
         flash.Lib.current.stopMe.onPress = ""; // или запретить другому
      }
    }
    else //или обоим
    {
        flash.Lib.current.cardHolder.onPress = "";
         flash.Lib.current.stopMe.onPress = "";
    }
  }


// получить номинал карты - туз идет за одно очко
  static function getCardValue(card : Int) : Int
  {
    var tmp_card = card%100;
    var valuesArray = new Array<Int> ();
    valuesArray = [2,3,4,5,6,7,8,9,10,10,10,10,1];
    return valuesArray[tmp_card - 1];
  }


// выдать карту игроку player
  static function addCart(player : Int)
  {
//идем с начала колоды - каунтер изначально = 0
    var nextCard = cards[Counter];
//создаем новый слой для отображения карты
    var temp : MovieClip = main_mc.createEmptyMovieClip("temp", main_mc.getNextHighestDepth());

    if(player == 1)
    {
//если игрок человек
//каждую новую карту сдвигаем на 50 пикселей по горизонтати
      temp._y = 5;
      temp._x = 10+50*cardCounterP1;
//увеличиваем количество очков игрока на номинал взятой карты
      pointsCounterP1 += getCardValue(nextCard);
//увеличиваем количество карт у игрока - на основе кол-ва карт генерятся слои
      cardCounterP1++;
//Меняем количество очков игрока в текстовом поле
      pointsLabelP1.text = pointsCounterP1 + "";
//разрешаем пользоваться правой картой - передачей игры компьютеру. Не разрешено сдавать ход если на руках нет карт
      stopMe.onPress = function()
      {
//при нажатии на кнопку каждую секунду выполняется goCompGo() - комп сравнивает очки и берет карты по необходимости
        timer = new Timer ( 1000 );
        timer.run = goCompGo;
      }
    }
    else
    {
//если игрок - компьютер
//ему мы генерим слои на 405 пикселей ниже
      temp._y = 405;
//каждую новую карту сдвигаем на 50 по горизонтали
      temp._x = 10+50*cardCounterP2;
//увеличиваем кол-во очков
      pointsCounterP2 += getCardValue(nextCard);
//кол-во взятых карт
      cardCounterP2++;
//и выводим кол-во очков в текстовое поле (справа) 
      pointsLabelP2.text = pointsCounterP2 + "";
    }  

//в новый слой, который мы создали под карту, добавляем изображение самой карты - её id мы берем из массива, само изображение подключается из библиотеки img.swf
    temp.attachMovie("card"+nextCard, "card", main_mc.getNextHighestDepth());
//увеличиваем количество взятых карт
    Counter++;
//если кто то из игроков набрал больше 21 очка, запускается функция gameOver()
    if(pointsCounterP1 > 21)
    {
      gameOver(1);
    }
    if(pointsCounterP1 == 21)
    {
      gameOver(2);
    }
    if(pointsCounterP2 > 21)
    {
      gameOver(2);
    }
  }

//перемешать колоду карт
  static public function shuffle(arr: Array<Int>) : Array<Int> //функция принимает массив, и возвращает массив
    {
      var tmp_arr = new Array<Int>(); //создаем временный массив
      for(i in 0...(arr.length)) //проходим в цикле каждый элемент переданного массива
      {
          var number = Math.round(Math.random()*Math.abs(arr.length-1)); //получаем случайный индекс переданного массива
          var t = arr.slice(number, number+1); //копируем его значение
          tmp_arr[i] = t[0]; //записываем значение во временный массив
          arr.remove(t[0]); //удаляем полученный индекс из переданного массива
      }
      return tmp_arr; //возвращаем новый (перемешанный) массив
    }

//в начале игры комп получает две карты
  static public function startGame()
  {
    addCart(2);
    if(cardCounterP2 == 2)
    {
      timer.stop();
//после получения двух карт комп дает возможность игроку брать карты - при нажатии на левую желтую карту - MovieClip cardHolder
      flash.Lib.current.cardHolder.onPress = function()
      {
        addCart(1);
      }
    }
  }

  static public function restartGame()
  {
//очищаем все созданные слои, останавливаем таймер и запускаем все по новой
    cardHolder.removeMovieClip();
    stopMe.removeMovieClip();
    main_mc.removeMovieClip();
    pointsLabelP1.removeTextField();
    pointsLabelP2.removeTextField();
    GameOver.removeTextField();
    timer.stop();
    new Test();
  }

  static public function gameOver(player : Int)
  {

    blockPlayer(1,2);
    timer.stop();
//создаем текстовое поле для унижения проигравшего
    GameOver = flash.Lib.current.createTextField("GameOver", flash.Lib.current.getNextHighestDepth(), 100, 200, 600, 200);
    GameOver.text = "Игрок " + player + " проиграл!!!";
    GameOver.textColor = 0x683146; //цвет текста

//создаем новый формат, который применим к тексту
    var format : TextFormat = new TextFormat();
    format.size = 60; //размер шрифта
    format.align = "center"; //выравнивание
    format.bold = true; //жирный текст
    GameOver.setTextFormat(format); //применяем к текстовому полю форматирование
    
    timer = new Timer( 2000 ); // ждем 2 секунды
    timer.run = restartGame; //перезапускаем игру

  }


//Теперь Ваш соперник так же сообразителен как и Вы! Ведь у него искуственный интеллект!! ))))
  static public function goCompGo()
  {
    blockPlayer(1); 
    if(pointsCounterP2 > 21)
    {
      gameOver(2);
    }
    if(pointsCounterP2 == pointsCounterP1)
    {
      gameOver(1);
    }
    if(pointsCounterP2 > pointsCounterP1 && pointsCounterP2 < 22)
    {
      gameOver(1);
    }
    if(pointsCounterP2 < pointsCounterP1)
    {
        addCart(2);
    }
    
  }

  static public function new()  
  {
    
    timer = new Timer ( 1500 ); //инициализируем новый таймер, на полторы секунды. Запустится командой timer.run

    cards = new Array <Int> (); //создаем массив колоды карт и наполняем его значениями
    var m = 100;
    var k = 1;
    for(i in 0...52)
    {

        cards[i] = m+k;
        k++;
        if(k == 14)
        {
          k = 1;
          m+= 100;
        }
    }
    cards = shuffle(cards); //перемешиваем колоду

//у игроков сейчас 0 карт и 0 очков соответственно
    cardCounterP1 = 0;
    cardCounterP2 = 0;
    pointsCounterP1 = 0;
    pointsCounterP2 = 0;
//ни одной карты из колоды не взято
    Counter = 0;

//создаем относительно главный мувиклип - к нему будем прилеплять слои с картами, которые получили игроки. Потом этот муви просто накерним
    main_mc = flash.Lib.current.createEmptyMovieClip("main_mc", 1);
    main_mc._x = 0; //расположение
    main_mc._y = 0;
    main_mc._xscale = 100; //размер в %
    main_mc._yscale = 100;

//Здесь мы создаем левую желтую карту, она символизирует колоду
    cardHolder = flash.Lib.current.createEmptyMovieClip("cardHolder", flash.Lib.current.getNextHighestDepth());
    cardHolder._x = 10; 
    cardHolder._y = 228;
//из библиотеки грузим картинку-рубашку карты
    cardHolder.attachMovie("card_back", "back1", 2);

//а это правая желтая карта, ничего не символизирует, служит для передачи хода компу
    stopMe = flash.Lib.current.createEmptyMovieClip("stopMe", flash.Lib.current.getNextHighestDepth());
    stopMe._x = 690;
    stopMe._y = 228;
    stopMe.attachMovie("card_back", "back1", 2);

//создаем текстовые поля и размещаем по странице - тут показывается сколько очков у игрока
    pointsLabelP1 = flash.Lib.current.createTextField("pointsLabelP1", flash.Lib.current.getNextHighestDepth(), 690, 10, 50, 50);
    
    pointsLabelP2 = flash.Lib.current.createTextField("pointsLabelP2", flash.Lib.current.getNextHighestDepth(), 690, 450, 50, 50);

// и указываем форматирование для текста
    var format : TextFormat = new TextFormat();
    format.size = 20;
    format.align = "center";
    format.bold = true;

//примечание - используется setNewTextFormat(format) вместо setTextFormat(format) - в данном случае текст указывается после форматирования, зато потом форматирование не сбрасывается при изменении текста

    pointsLabelP1.setNewTextFormat(format);
    pointsLabelP2.setNewTextFormat(format);

    pointsLabelP1.text = pointsCounterP1 + "";
    pointsLabelP2.text = pointsCounterP2 + "";
    
    timer.run = startGame;
  }

  static public function main() : Void
  {
    new Test();
  }


}
Метки:

Игра пьяница

 Итак - изучал добавление картинок во флеш, создалась игра "пьяница" - компьютер играет сам с собой =)

/*
Ридми
компиляем
сначала создаем библиотеку изображений
# swfmill simple images.xml img.swf
потом компиляем класс
#   haxe -swf test.swf -swf-lib img.swf -main Test -swf-version 9 Test.hx -swf-header 500:300:16:5da130

для своего удобства я сделал карты таким образом
113.jpg - первая цифра обозначает масть, две другие - саму карту
113 - это туз пикей
112 - король пикей
413 - туз бубей
412 - король бубей
и т.п. 
*/
import flash.display.MovieClip;
import haxe.Timer;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.text.TextFieldAutoSize;


class Test
{
  
  private var mc : MovieClip;             //основное окно, куда будем подгружать эелементы
  private var card1Layer : MovieClip;     //окошко для отображения карты 1
  private var card2Layer : MovieClip;     //окошко для отображения карты 2
  private var hand1Layer: MovieClip;      //окошко для отображения кол-ва карт у игрока 1 (Hand1 - 22)
  private var hand2Layer: MovieClip;      //окошко для отображения кол-ва карт у игрока 1 
  private var hand1Score : TextField;     //само количество карт у игрока 1 
  private var hand2Score: TextField;      //и игрока 2
  private var timer : Timer;
  static var hand1 : Array<Int>;          //массив с картами у игрока 1
  static var hand2 : Array <Int>;         //и у игрока 2
  
  static var cards: Array<Int>; //колода карт - все 52 карты
  static var tmp_arr: Array<Int>; //временный массив, необходимый для моей функции shuffle

  static public function shuffle(arr: Array<Int>) : Array<Int> //функция принимает массив, и возвращает массив
    {
      tmp_arr = new Array<Int>(); //создаем временный массив
      for(i in 0...(arr.length)) //проходим в цикле каждый элемент переданного массива
      {
          var number = Math.round(Math.random()*Math.abs(arr.length-1)); //получаем случайный индекс переданного массива
          var t = arr.slice(number, number+1); //копируем его значение
          tmp_arr[i] = t[0]; //записываем значение во временный массив
          arr.remove(t[0]); //удаляем полученный индекс из переданного массива
      }
      return tmp_arr; //возвращаем новый (перемешанный) массив
    }


  private function new (_mc : MovieClip)
  {
    mc = _mc;
    timer = new Timer( 1500 ); //объект timer установлен на каждые полторы секунды, но пока не запущен
    
    card1Layer = new MovieClip(); //выделяем область под карту 1 и устанавливаем координаты левого угла
    card1Layer.x = 50;
    card1Layer.y = 50;
    
    
    card2Layer = new MovieClip(); //для второй карты
    card2Layer.x = 170;
    card2Layer.y = 50;

    hand1Layer = new MovieClip(); //для надписи сколько карт у игрока 1
    hand1Layer.x = 300;
    hand1Layer.y = 50;
        
    hand1Score = new TextField();    //создаем надпись
    hand1Score.embedFonts = true;    
    hand1Score.width = 100;         //длина надписи
    hand1Score.height = 30;         //высота
   
    var format:TextFormat = new TextFormat(); //настройки надписи
    format.font = "myFont";
    format.color = 0x000000;
    format.size = 30;
    format.align = TextFormatAlign.CENTER;
    hand1Score.defaultTextFormat = format;
   
    hand1Layer.addChild(hand1Score);    //добавляем надпись в то окно, которое для него создали
        
    hand2Layer = new MovieClip();     //тоже самое со второй надписью
    hand2Layer.x = 300;
    hand2Layer.y = 80;
        
    hand2Score = new TextField();
    hand2Score.embedFonts = true;
    hand2Score.width = 100;
    hand2Score.height = 30;
   
    hand2Score.defaultTextFormat = format;
   
    hand2Layer.addChild(hand2Score);
        
    


    timer.run = run; //теперь запускаем таймер - каждые полторы секунды он будет запускать функцию run()

  }

  private function gameOver()
  {
    //тут надо что то покрасивее, со взрывающимся вертолетом, но я так и не дождался конца игры и не уверен что ф-ция вообще работает 
    trace("\nHand1: " + hand1 + "\n Hand2: " + hand2);
    if(hand1.length == 0)
    {    
      trace("\n\n\nPlayer 2 WINNER!!");
    }
    else
    {
      trace("\n\n\nPlayer 1 WINNER!!");
    }
    
     mc.removeChild(card1Layer);
     mc.removeChild(card2Layer);
     mc.removeChild(hand1Layer);
     mc.removeChild(hand2Layer);
  }


  private function run()
  {
    //если у кого то карт не осталось, останавливаем счетчик и запускаем функцию gameOver()
    if(hand1.length == 0 || hand2.length == 0)
    {
      timer.stop();
      gameOver();
    }



    hand1Score.text = "Hand1 " + hand1.length; //Создаем текст для надписи - сколько карт у игрока 1
    hand2Score.text = "Hand2 " + hand2.length;  //Сколько карт у игрока 2

    var hand1Val = hand1.shift();   //берем по одной самой первой карте у каждого игрока
    var hand2Val = hand2.shift();
   
    card1Layer.addChild(flash.Lib.attach("card"+hand1Val)); //рисуем их каждую на своем слое
    card2Layer.addChild(flash.Lib.attach("card"+hand2Val)); 

    mc.addChild(card2Layer); //все получившееся - и карты и надписи - добавляем к самому главному слою
    mc.addChild(card1Layer);
    mc.addChild(hand1Layer);
    mc.addChild(hand2Layer);

    //логика самой игры 

    if((hand1Val%100 == 13 && hand1Val%100 == 1) || (hand2Val%100 == 13 && hand1Val%100 == 1))
    {
        if(hand1Val%100 == 13 && hand1Val%100 == 1)
        {
          hand2.push(hand1Val);
          hand2.push(hand2Val);
        }
        else
        {
          hand1.push(hand1Val);
          hand1.push(hand2Val);
        }
    }
    else
    {
      if(hand1Val%100 > hand2Val%100)
      {
        hand1.push(hand1Val);
        hand1.push(hand2Val);
      }
      if(hand2Val%100 > hand1Val%100)
      {
        hand2.push(hand1Val);
        hand2.push(hand2Val);
      }
      if(hand1Val%100 == hand2Val%100)
      {
        hand1.push(hand1Val);
        hand2.push(hand2Val);
      }
    }

  }

  static function main():Void
  {
    //создаем массив - колоду карт и наполняем её значениями - см примечение в начале файла
    cards = new Array <Int> (); 
    var m = 100;
    var k = 1;
    for(i in 0...52)
    {

        cards[i] = m+k;
        k++;
        if(k == 14)
        {
          k = 1;
          m+= 100;
        }
    }
    cards = shuffle(cards); //перемешиваем
    hand1 = cards.slice(0, 26); //выделяем карты в первую руку
    hand2 = cards.slice(26); //и во вторую
    new Test(flash.Lib.current); //и запускаем конструктор класса
  }
}

архив можно скачать тут
Метки:

Загрузка изображений во флеш приложения (haxe+swfmill)

 Любительский перевод описания библиотеки swfmill

Некоторые программы умеют экспортировать SWF. Вам, возможно хочется встраивать в SWF шрифты, изображения и компоненты. Для того, что бы флеш-разработчики, работающие на свободном ПО имели такю возможность, Daniel Fischer и сотоварищи создали swfmill. Библиотека распространяется под лицензий GPL и может конвертировать SWF в XML (SWFML) и обратно. Этот формат был создан для того, что бы облегчить Вам работу. Например, Вы сможете:

  • Импортировать Ваши активы в библиотеку. Вы можете расшарить эту библиотеку при желании. На время написания поддерживались следующие форматы:
    • SWFs
    • SWCs (components, with a bit of effort)
    • TrueType fonts, or a specified subset of characters
    • jpegs
    • PNGs (24 and 32 bit, including alpha)
  • Помещать импортированные штуки в объекты с идентификатором для доступа к ним из скрипта
  • Контролировать, что в текущий момент подключено в конкретном фрейме
  • Создавать (и делать доступным для скрипта) ролики (movieclips) с кучей фреймов
swfmill активно разработывается, и новые фичи рано или поздно будут добавлены. Вы можете отправлять нам замеченные баги, обсуждать проект на нашем форуме и подписаться на рассылки. Просто пошлите пустой email на: 
swfmill-subscribe[at]subsignal.org 

Предупреждение:

swfmill's SWFML не стоит считать законченным продуктом. Возможно, мы будем вносить определенные изменения, о чем уведомим Вас по подписке.

Тем не менее, все готово к использованию так, как есть. 


Использование swfmill

Создаем базовый SWF

Это просто. Следующий пример должен все разъяснить:



<movie width="320" height="240" framerate="12">
<background color="#ffffff"/>
<frame/>
</movie>
Атрибут "encoding" весьма важен. Установите ту кодировку, с которой Вы работаете. Сохраните этот файл как "foo.xml" и приступим к созданию из него "bar.swf". Вот как надо вызвать swfmill: 
swfmill simple foo.xml bar.swf

Ok, это было просто. Но все же, полученный SWF не особо функционален. Мы получили пустой SWF, 320 на 240 пикселей с белым бекграундом и 12. Давайте засунем в него еще что нибудь.


Добавляем активы в библиотеку 

Для того, что бы добавить изображение "foo.jpg" из директории "library" (расположенной рядом с нашим SWF-файлом), добавьте следующие строки в <movie/> внутри базового описания SWF:

<frame>
<library>
<clip id="foo" import="library/foo.jpg"/>
</library>
</frame>
Пропустите это через swfmill снова, и полученный SWF будет иметь изображение в библиотеке. Оно имеет  идентификатор "foo", и для его использования Вам нужно будет использовать MovieClip.attachMovie(), как Вы обычно и делаете. swfmill признает расширение файла, импорт PNG или SWF будет проходить точно также, через добавление их в узел <library/>.

Импорт шрифтов

Шрифты работают несколько иначе. Что бы импортировать все цифры шрифта vera.ttf как "vera", Вам придется добавить следующее ПОСЛЕ узла <library>:

<font id="vera" import="library/vera.ttf" glyphs="0123456789"/>

Импорт расшаренных библиотек

Не придется делать ничего сверхестественного что бы добавить расшаренную библиотеку. Всего лишь запомните URL куда Вы её положили, и сохраните локальную копию. Что бы добавить библиотеку, добавьте эту строку для каждого SWF:

<import file="library/library.swf" url="http://foo.com/library.swf"/>

Образец библиотеки SWF

Нижеописанный XML заполняет библиотеку несколькими активами, добавляет шрифты и расширенную библиотеку. Её мы подключаем в отдельном фрейме #5 под названием "myFrame" так что Вы можете выполнить gotoAndPlay( "myFrame" ):



<movie width="320" height="240" framerate="12">
<background color="#ffffff"/>

<!-- first frame -->
<frame>

<!-- add some assets to the library -->
<library>
<clip id="picture" import="library/picture.jpg"/>
<clip id="bitmap" import="library/bitmap.png"/>
<clip id="clip" import="library/clip.swf"/>
</library>

<!-- import the numerical characters of vera.ttf -->
<font id="vera" import="library/vera.ttf" glyphs="0123456789"/>

<!-- import a shared library -->
<import file="library/library.swf" url="http://foo.com/library.swf"/>
</frame>

<!-- some empty frames -->
<frame/>
<frame/>
<frame/>

<!-- frame "myFrame" -->
<frame name="myFrame">
<library>
<clip id="anotherClip" import="library/foobar.swf"/>
</library>
</frame>
</movie>
Если Вам нужна только библиотека, то вот она. Но еще в нее можно включать компоненты, помещать клипы и новые возможности SWFML simple.


об этом можно читать на английском вот тут
Метки:

Haxe - Отрисовка линии

Рисует отколбашенный неуравновешенный двигающийся приямоугольник

import flash.display.Graphics;
import flash.display.Sprite;
import haxe.Timer;

class Test 
{
  static var timer: Timer;
  static var counter: Int;
  static var gr: Graphics;
  static var spr: Sprite;
  static var opt: Int;
  static var sw: Bool;

  public function new()
  {

    spr = new Sprite(); //новый типа холст
    spr.x = 0; //координата х относительно угла флеша
    spr.y = 0; //координата y
    flash.Lib.current.addChild(spr); //добавляем холст 
    gr = spr.graphics; //используем свойства холста для рисования на нем
    timer = new Timer( 1000 ); //запускаем таймер посекундно
    timer.run = test;  //заставляем его выполнять функцию test

  }

  public function test()
  {
    gr.clear(); //очищаем художества
    gr.beginFill(0xFD7D00, 100); //говорим ему рисуй!
    gr.lineStyle(0,0xFD7D00, 0); //рисуй красными линиями
    
    gr.moveTo(100+opt, 50); //отступи от края холста на 100+opt по горизонтали и 50 вертикали
    gr.lineTo(50+opt, 50); //рисуй от x до y
    gr.lineTo(50+opt, 250); //рисуй от x до y
    gr.lineTo(100+opt,250); //рисуй от x до y
    gr.lineTo(100+opt,50);  //рисуй от x до y
    gr.endFill();           //хватит рисовать
  

    //далее идет нечитабельный ненужный индийский код
    if(counter == 10)
    {
      sw = false;
    }
    if(counter == 1)
    {
      sw = true;
    }
    if(sw)
    {
      counter++;
      opt += 50;
    }
    else
    {
      counter--;
      opt -=50;
    }
  }

  static public function main() : Void
  {
    counter = 1; 
    sw = true;
    opt = 0;
    new Test();
  }

}
Метки:

StringTools

 class StringTools
Available in flash, flash9, neko, js, php


Класс StringTools содержит дополнительные функции для работы со строками. Эти функции содержатся в отдельном от String классе что бы не конфликтовать со стандартыми функциями, и подключение этого класса увеличивает размер созданных приложений.

static function endsWith( s : String, end : String ) : Bool
Заканчивается ли строка s строкой end.
 

static function hex( n : Int, ?digits : Int ) : String
Конвертирует число в 
шестнадцатеричное представление, digits указывает число нулей слева. 

static function htmlEscape( s : String ) : String
Заменяет спецсимволы HTML из строки.
 

static function htmlUnescape( s : String ) : String
Переводит символы HTML обратно.
 

static function isSpace( s : String, pos : Int ) : Bool
Является ли символ s в позции pos пробелом.
 

static function lpad( s : String, c : String, l : Int ) : String
Добавляет слева к s строку c пока не наберет количество l символов.
 

static function ltrim( s : String ) : String
Удаляет пробелы слева от сроки s.
 

static function replace( s : String, sub : String, by : String ) : String
Заменяет все вхождения sub в строку s на строку by.
 

static function rpad( s : String, c : String, l : Int ) : String
Добавляет к строке s строку c пока не наберет l символов


static function rtrim( s : String ) : String
Удаляет пробелы справа от строки s.
 

static function startsWith( s : String, start : String ) : Bool
Начинается ли стока s со строки start.
 

static
 function trim( s : String ) : String
Удаляет пробелы справа и слева от строки s.
 

static function urlDecode( s : String ) : String
Дешифрует URL в соответствии со 
 стандартом

urlEncode( s : String ) : String
Шифрует URL в сответствии со стандартом.
Метки:

StringBuf

 class StringBu
Available in flash, flash9, neko, js, php

Удобный способ собирать String buffer из одиночных символов. 

function new() : Void
Создает новый string buffer.
 

function add( ?x : Dynamic ) : Void
Добавляет объявление любого элемента в буфер.
 

function addChar( c : Int ) : Void
Добавляет символ в string buffer.
 

function addSub( s : String, pos : Int, ?len : Int ) : Void
Добавляет часть строки в string buffer.
 
function toString() : String
Возвращает строковое представление буфера. Буфер при этом не обнуляется.
Метки:

String

 extern class String
Available in flash, flash9, neko, js, php
Базовый класс String. 

var length(default,null) : Int
Число символов в String.
 

function new( string : String ) : Void
Создает новый объект String.
 

function charAt( index : Int ) : String
Возвращает символ из указанной позиции. Возвращает пустую строку если вылезает за пределы указанной строки.
 

function charCodeAt( index : Int ) : Null<Int>
Возвращает код символа из указанной позиции. Вернет null за пределами строки.

function indexOf( value : String, ?startIndex : Int ) : Int
Возвращает позицию первого вхождения value. Возвращает -1 если значение не находит. Опциональная переменная startIndex указывает, откуда начинать поиск. Позиция элемента указывается от начала строки.
 

function lastIndexOf( value : String, ?startIndex : Int ) : Int
Похожа на indexOf но возвращает позицию последнего вхождения строки.
 

function split( delimiter : String ) : Array<String>
Разделяет строку используя разделитель delimiter.
 

function substr( pos : Int, ?len : Int ) : String
Возвращает часть строки, принимает длину len  символов начиная от позиции pos. если длина не указана, возвращает все оставшиеся символы.
 

function toLowerCase() : String
Переводит все символы строки в нижний регистр.
 

function toString() : String
Возвращает саму строку (как понял из англоязычного API возвращает саму себя).
 

function
 toUpperCase() : String
Переводит все символы строки в верхний регистр.
 

static function fromCharCode( code : Int ) : String
описания нет =( Но по названию дико сложно догадаться, что ЭТО
Метки:

STD

 Еще раз убедился, что сначала нужно читать книжки а потом изобретать велосипеды ) Кароч базовые функции

class Std
Available in flash, flash9, neko, js, php

Класс Std содержит базовые функции для работы с данными.
 

static function int( x : Float ) : Int
Переводит Float в Int, округляет в нижнюю сторону.
 

static function is( v : Dynamic, t : Dynamic ) : Bool
Является ли переменная v типом t. (является ли переменная v String например)
 

static function parseFloat( x : String ) : Float
Переводит String в Float, парсит различные представления.
 

static function parseInt( x : String ) : Null<Int>
Переводит String в Int, парсит различные представления. Возвращает null если не может пропарсить.
 

static function random( x : Int ) : Int
Возвращает число от 0 включительно до x невключительно.
 

static function string( s : Dynamic ) : String
Конвертит любое значение в String;
Метки:

Reflect

 class Reflect
Available in flash, flash9, neko, js, php


Reflect API дает возможность динамично управлять переменными через абстрактные интерфейсы и неопределенные методы. Используйте это осторожно!

static function callMethod( o : Dynamic, func : Dynamic, args : Array<Dynamic> ) :Dynamic
Вызывает метод с указанным объектом и аргументами. К примеру, что бы вызвать метод "foo" без аргументов для объекта "obj" используйте: 
Reflect.callMethod(obj, Reflect.field(obj, "foo"), []).
 

static function compare<T>( a : T, b : T ) : Int
Общесравнительная функция, не работает для методов (см. compareMethods). Может быть использована для объектов, которые включают__compare(other):Int. Возвращает null если параметры не могут быть сравнены.
 

static function compareMethods( f1 : Dynamic, f2 : Dynamic ) : Bool
Сравнивает два метода. Возвращает true если это одинковые методы одинаковых экземпляров объекта.

static function copy<T>( o : T ) : T
Создает копию значений объекта. Работает с instances в neko. Only guaranteed to work with anonymous objects on other targets.
 

static function deleteField( o : Dynamic, f : String ) : Bool
Удаляет значение объекта.
 

static
 function field( o : Dynamic, field : String ) : Dynamic
Возвращает значение или null если это не объект или у него нет такого параметра.

static function fields( o : Dynamic ) : Array<String>
Возвращает список значений объекта, включенных в прототип (class methods).


static function hasField( o : Dynamic, field : String ) : Bool
Проверяет объект на наличие. This doesn't take into account the object prototype (class methods).
 

static function isFunction( f : Dynamic ) : Bool
Функция или нет.
 

static function isObject( v : Dynamic ) : Bool
Объект или нет.
 

static function makeVarArgs( f : Array<Dynamic> -> Dynamic ) : Dynamic
Изменяет функцию, создает массив аргументов, которые нужно использовать

static function setField( o : Dynamic, field : String, value : Dynamic ) : Void
Устанавливает новое значение.
Метки:

Реализация shuffle на haxe

 class Test
{
    static var cards: Array<Int>; //Массив для эксперимента - колода карт

    static var tmp_arr: Array<Int>; //временный массив, необходимый для моей функции

    static public function shuffle(arr: Array<Int>) : Array<Int> //функция принимает массив, и возвращает массив
    {
      tmp_arr = new Array<Int>(); //создаем временный массив
      for(i in 0...(arr.length)) //проходим в цикле каждый элемент переданного массива
      {
          var number = Math.round(Math.random()*Math.abs(arr.length-1)); //получаем случайный индекс переданного массива
          var t = arr.slice(number, number+1); //копируем его значение
          tmp_arr[i] = t[0]; //записываем значение во временный массив
          arr.remove(t[0]); //удаляем полученный индекс из переданного массива
      }
      return tmp_arr; //возвращаем новый массив
    }

  static public function main()
  {
    cards = new Array<Int>(); //создаем массив для глумлений
    for(i in 0...35) //наполняем его важной информацией
    {
      cards[i] = i;
    } 
    trace("source_array: " + cards); //выводим на экран

    cards = shuffle(cards); //перемешиваем и 
    trace("shuffle array: " + cards); //снова выводим
  }

}
Метки:

class Math

 class Test
{

    static public function main() : Void
    {

      trace("Math.NEGATIVE_INFINITY = " + Math.NEGATIVE_INFINITY); //-бесконечность
      trace("Math.POSITIVE_INFINITY = " + Math.POSITIVE_INFINITY); //+бесконечность
      trace("Math.PI = " + Math.PI); 
      trace("Math.NaN = " + Math.NaN);

      trace("Math.abs(-1) = " + Math.abs(-1)); //модуль числа
      trace("Math.acos(1) = " + Math.acos(1)); //арккосинус
      trace("Math.asin(1) = " + Math.asin(1)); //арксинус
      trace("Math.atan(1) = " + Math.atan(-1)); //арктангенс
      trace("Math.ceil(1.88) = " + Math.ceil(1.88)); //округление в большую сторону
      trace("Math.cos(1) = " + Math.cos(1)); //косинус
      trace("Math.exp(1) = " + Math.exp(1)); //експонента
      trace("Math.floor(1.88) = " + Math.floor(1.88)); //округление в меньшую сторону
      trace("Math.isFinite(1.88) = " + Math.isFinite(1.88));//Если аргумент имеет значение NaN, положительная или отрицательная бесконечность, этот метод возвращает false, иначе возвращает true.
      trace("Math.isFinite(Math.NaN) = " + Math.isFinite(Math.NaN));//Если аргумент имеет значение NaN, положительная или отрицательная бесконечность, этот метод возвращает false, иначе возвращает true.
      trace("Math.isNaN(1.88) = " + Math.isNaN(1.88)); //Выясняет, содержит ли число с плавающей запятой настоящее число
      trace("Math.log(1.88) = " + Math.log(1.88)); //логарифм
      trace("Math.max(1,1.88) = " + Math.max(1,1.88)); //возвращает максимальное число
      trace("Math.min(1,1.88) = " + Math.min(1,1.88)); //возвращает минимальное число
      trace("Math.pow(2,3) = " + Math.pow(2,3)); //x в степени y - 2 в степени 3
      trace("Math.round(1.88) = " + Math.round(1.88)); //"честное" округление
      trace("Math.random() = " + Math.random()); //случайное число от 0 до 1
      trace("random 1-10 Math.round(Math.random*10) = " + Math.round(Math.random()*10)); //получаем случайное число от 1 до 10
      trace("Math.sin(1) = " + Math.sin(1)); //синус
      trace("Math.sqrt(64) = " + Math.sqrt(64)); //корень
      trace("Math.tan(1) = " + Math.tan(1)); //тангенс
    }

}
Метки:

(без темы)

class Test
{
static var myHash: Hash<String>; //инициализируем переменную myHash

static public function main() : Void
{
myHash = new Hash<String>(); //создаем новый хеш для экспериментов

trace("myHash = new Hash<String>(); \nhash is now " + myHash + "\n"); //отладка

myHash.set("first", "FirstHashValue"); //добавляем в хеш новую пару ключ+значение

trace('myHash.set("first", "FirstHashValue");' + "\nhash is now " + myHash + "\n"); //отладка

myHash.set("second", "SecondHashValue"); //добавляем в хеш новую пару ключ+значение
trace('myHash.set("second", "SecondHashValue");' + "\nhash is now " + myHash + "\n"); //отладка

trace("Is exist key 'first'? \n " + myHash.exists("first") + "\n"); //exists - проверяет ключи на существование
trace("Is exist key 'third'? \n " + myHash.exists("third") + "\n");

var temp_value = myHash.get("first"); //получить значение для ключа 'first' и записать в temp_value
trace('myHash.get("first"); '+"\n"+temp_value + "\n");

var hashString = myHash.toString();
trace("myHash.toString(); \n" + hashString + "\n"); //строковое представление

myHash.remove("second"); //удалить цепочку second
trace('myHash.remove("second");' + "\nhash is now " + myHash + "\n");


}

}

компилирую с ключами

-swf-version 9 \
-swf hash_example.swf \
-swf-header 450:400:16:ffff66 \
-main \
Test.hx
Метки:

List

class List< T >
Available in flash, flash9, neko, js, php

Это несколько двумерных массивов, объединенных между собой в цепочки. Оптимизирован для добавления|удаления элементов без перечитывания их.


var length(default,null) : Int
Количество элементов в списке.


function new() : Void
Создает новый пустой список.


function add(item : T) : Void
Добавляет элемент в конец списка.


function clear() : Void
Помечает список как пустой.


function filter(f : T — > Bool) : List< T >
Возвращает значения списка в соответствии с фильтром f. Вернет все элементы списка x, где f(x) = true.
 

function
 first() : T
Возвращает первый элемент списка, или null если список пустой.


function isEmpty() : Bool
Сообщает, является ли массив пустым.


function iterator() : Iterator< T >
Возвращает итератор элементов списка.
 

function
 join(sep : String) : String
Добавляет элементы, используя резделитель sep.
 
function
 last() : T
Возвращает последний элемент списка, или null если список пустой.


function map< X >(f : T — > X) : List< X >
Возвращает новый список, где все элементы старого обработаны функцией f.


function pop() : T
Удаляет первый элемент списка и возвращает его или возвращает null если список пустой.


function push(item : T) : Void
Добавляет элемент в начало списка.


function remove(v : T) : Bool
Удаляет первый элемент, который == v из списка. Возвращает true если элемент был удален, либо false.


function toString() : String
Возвращает строковое представление списка.
 
Метки:

Lambda

class Lambda
Available in flash, flash9, neko, js, php

Содержит набор функций для полноценной работы в haxe.


static function array< A >(it : Iterable< A >) : Array< A >
Создает массив из Iterable
 

static
 function count< A >(it : Iterable< A >) : Int
Возвращает количество элементов в Iterable


static function empty(it : IterableDynamic >) : Bool
Сообщает, является ли объект пустым.


static function exists< A >(it : Iterable< A >, f : A — > Bool) : Bool
Сообщает, есть ли хоть один элемент в объекте. Если есть то применяет функцию.
static function filter< A >(it : Iterable< A >, f : A — > Bool) : List< A >
Возвращает список элементов в соответствии с функцией  'f'


static function fold< A, B >(it : Iterable< A >, f : A — > B — > B, first : B) : B
Functional 'fold' using an Iterable
 

static
 function foreach< A >(it : Iterable< A >, f : A — > Bool) : Bool
Сообщает, если все элементы имеют свойства, определенные в f.


static function has< A >(it : Iterable< A >, elt : A, ?cmp : A — > A — > Bool) : Bool
Сообщает, если элементы являются частью перечисления


static function iter< A >(it : Iterable< A >, f : A — > Void) : Void
Применяет функцию 'f' ко всем элементам 'it'.


static function list< A >(it : Iterable< A >) : List< A >
Создает List из Iterable


static function map< A, B >(it : Iterable< A >, f : A — > B) : List< B >
Создает новый List, применяя функцю 'f' ко всем элементам 'it'.


static function mapi< A, B >(it : Iterable< A >, f : Int - > A — > B) : List< B >
Похожа на map, но добавляет индексы.
 
Метки:

intHash

 Available in flash, flash9, neko, js, php

Хеш с элементами, использует Int в качестве ключей. Во Flash и Javascript, структура идентична Object.

function new() : Void
Создает новый пустой хеш.


function exists(key : Int) : Bool
Возвращает, создано ли значение для ключа. Удобно проверять, создан ли ключ вообще.


function get(key : Int) : Null< T >
Возвращает значение ключа.


function iterator() : Iterator< T >
Возвращает разделитель всех значений хеша.


function keys() : IteratorInt >
Возвращает разделитель всех ключей.


function remove(key : Int) : Bool
Удаляет вхождение элемента. возвращает true если элемент БЫЛ =).


function set(key : Int, value : T) : Void
Устанавливает значение для ключа.


function toString() : String
Возвращает строковое представление хеша.

Hash

class Hash< T >
Available in flash, flash9, neko, js, php

Таблица Hash содержит элементы, ключами к которым являются строки. Другие виды ключей не допускаются.

function new() : Void
Создает новый пустой хеш.


function exists(key : String) : Bool
Сообщает, создано ли значение для ключа. В частности, полезно проверять является ли значение null или no value.


function get(key : String) : Null< T >
Получить значение для ключа.


function iterator() : Iterator< T >
Возвращает итератор всех переменных в хеше.


function keys() : IteratorString >
Возвращает итератор всех ключей в хеше.


function remove(key : String) : Bool
Удаляет вхождение элемента. Возвращает true если элемент существовал.


function set(key : String, value : T) : Void
Устанавливает для определенного ключа значение.


function toString() : String
Возвращает строковое представление хеша.
 
Метки:

Ereg

class EReg
Available in flash, flash9, neko, js, php

Это регулярные выражения =). По ним написана отдельная книга

function new(r : String, opt : String) : Void
Создает новое регулярное выражение с шаблоном r и опциями opt.


function customReplace(s : String, f : EReg - > String) : String
При обнаружении каждого вхождения шаблона в строку s, вызывается функция f и может вернуть строку которую надо заменить. Все вхождения считаются в любом случае, и установка флага g может вызвать ошибки при работе на некоторых системах.


function match(s : String) : Bool
Сообщает о нахождения вхождения выражения в строку String.


function matched(n : Int) : String
Возвращает совпашую группу или исключение, если ничего не найдено.
Если n = 0, возвращается вся совпашая строка.


function matchedLeft() : String
Возвращает часть строки, которая была слева от шалона.


function matchedPos() : { pos : Int, len : Int }
Возвращает позицию совпашего выражения совместно с совпавшей строкой.


function matchedRight() : String
Возвращает часть строки справа от совпадения.


function replace(s : String, by : String) : String
Заменяет строку на строку. Формат by может содержать от $1 до $9 — сопавших групп. $$ подразумевает символ $.


function split(s : String) : ArrayString >
Разделяет строку по регулярному выражению.
 
Метки:

Date Tools

 class DateTools
Available in flash, flash9, neko, js, php


Класс DateTools содержит расширенную функциональность для операций с объектом Date. Его функции хранятся в классах, отличных от класса Date и увеличивают вес созданного флеш приложения при их использовании.


static function days(n : Float) : Float
Переводит количество дней в дату-время

static function delta(d : Date, t : Float) : Date
Возвращает дату, с изменением на t милисекунд.

static function format(d : Date, f : String) : String
Форматирует дату d в соответствии с форматом f. Формат совместим со стандартным форматом strftime, но во Flash и JS названия дней недели и месяца могут не поддерживаться. В haXe/Neko/Windows, Некоторые форматы не поддерживаются.
static function getMonthDays(d : Date) : Int
Возвращает количество дней в месяце


static function hours(n : Float) : Float
Переводит количество часов в дату-время.

static function make(o : { seconds : Int, ms : Float, minutes : Int, hours : Int, days : Int}) : Float
Создает дату-время из нескольких компонент

static function minutes(n : Float) : Float
Переводит минуты в дату-время

static function parse(t : Float) : { seconds : Int, ms : Float, minutes : Int, hours : Int, days : Int }
Разделяет дату-время на несколько компонент

static function seconds(n : Float) : Float
Переводит секунды в дату-время
Метки:

Date

 extern class Date
Available in flash, flash9, neko, js, php


Класс Date используется для операций с датами. Дополнительные опции представлены в классе DateTools.


function new(year : Int, month : Int, day : Int, hour : Int, min : Int, sec : Int) : Void
Создает новый объект date.


function getDate() : Int
Возвращает день месяца (1—31).


function getDay() : Int
Возвращает день недели (0—6 range).


function getFullYear() : Int
Возвращает год.


function getHours() : Int
Возвращает час (0—23).


function getLocaleLongDate() : String
Доступно только во flash lite

function getLocaleShortDate() : String
Доступно только во flash lite

getLocaleTime() : String
Доступно только во flash lite

function
 getMinutes() : Int
Возвращает минуты (0—59).


function getMonth() : Int
Возвращает месяц (0—11).


function getSeconds() : Int
Возвращает секунды (0—59).


function getTime() : Float
Возвращает timestamp (метку времени).

function toString() : String
Возвращает строковое представление Date, используя формат YYYY-MM-DD HH:MM:SS. См. DateTools.format для изменения формата.
 

static
 function fromString(s : String) : Date
Возвращает объект Date из строки следующих форматов:
YYYY-MM-DD hh:mm:ss или
YYYY-MM-DD  или
hh:mm:ss.
Первые дво формата представлены в локальном времени, третий в UTC Epoch.
 

static
 function fromTime(t : Float) : Date
Возвращает объект Date из метки времени (timestamp) t.


static function now() : Date
Возвращает Date в текущем локальном времени.
Метки:

Предыдущие 20

Реклама

Настроить