Поиск
Показаны результаты для тегов 'php'.
Найдено: 12 результатов
-
Здравствуйте! Что я могу вам предложить? Услуги:- Верстка от 1500 рублей за страницу- Программирование (Bitrix, Wordpress, Laravel)- Разработка дизайна сайтов от - Разработка дизайна мобильных приложений- Разработка и доработка вашего сайта- Наполнение контентомЦены:Демократичные, от 15000 руб за сайтПреимущества:- Качественный сервис и обслуживание- Постоянная связь с клиентомНаш сайт и портфолио: https://uragangroup.ruО нас:- Команда из 5 человек- 5 летний стаж работы. - Профиль в fl.ru (c положительными отзывами), BehanceКонтактыТелеграм: @uragan_designSkype: uragan.design (Голосовые звонки и чат) Почта: uragan.design@gmail.comFL: https://www.fl.ru/users/moozi/ Behance: https://www.behance.net/uragan_design
-
Продам php скрипты с CodeConyon. Оригинальные зип файлы. Низкие цены. Bitcoin Affiliate System Cryptocurrency Exchange Crypto Script - Live Prices, Charts, Trades, Calculator and more Realtime Cryptocurrency Market Prices ,Charts Cloud Mining Platform Initial Coin Offering Platform и др. Список будет пополняться, если в списке нет, того что вам нужно пишите мне в личку. Ссылка: https://selly.gg/@ellatrix Оплата: BTC, LTC, ETH, BCH.
-
Здравствуйте! Как перевести биткоины с моего кошелька poloniex на чужой (тоже poloniex) при помощи php. 1. Возможно ли? 2. Что для этого нужно? 3. С чего начать?
-
Доброго дня! Не могу получить ответ от сервера poloniex. Постоянно вылазит ошибка. Апи ключ и секретный в скрипт установлен. Пробовал работать с классом представленным в документации полоникса, а так же сторонних разработчиков, результат всегда один и тот же. Может кто сталкивался подскажите в какую сторону копать. Ошибка: file_get_contents(......................): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden Пример кода: require("poloniex.php"); $polo = new Poloniex($key, $secret); $ticker = $polo->returnTicker(); print_r($ticker); p.s. В интерфейсе биржи в API стоит статус, что ни разу не было подключений. Благодарю за помощь!
- 4 ответа
-
- php
- api poloniex
-
(и ещё 1 )
C тегом:
-
Нужен сервис которому можно скормить BTC адрес, в ответ получив временный адрес для оплаты после поступления денег на временный чтобы был запрос на сайт с подтверждением оплаты. Ну и уже с временного кошелька автоматически чтобы перевело деньги на реальный кошелек. П.С. Кошельки будут пользователей Подробнее описал на тостере - https://toster.ru/q/342114
- 11 ответов
-
- api
- blockchain
- (и ещё 4 )
-
-Необходимо элегантное решение, как хранить информацию, которая точно не будет потеряна? -Хранение на компьютере ненадежно, они ломаются, в облаках тоже не надежно, инфу может изменить оператор облака, кроме того хостинг просто может перестать существовать. -Технология блокчейн выглядит оптимистично, много блокчейнов уже создано, но будут ли они существовать вечно? Мечтаем: сохранение информации навечно, без возможности изменения и удаления и моментальный доступ из любой страны. Идея: распределенное хранилище данных, база данных хранится в облаке из независимых узлов биткоин сети. Решение: для записи в блокчейн можно провести транзакцию между двумя биткоин кошельками (можно своими, конечно), а записываемую информацию передать как notice (~250 символов). Проблема: Фактически в транзакцию может провести кто угодно, но без гарантии, что она будет записана. Весь мир может записать в блокчейн не более 1 мб информации в ~10 минут. Что бы транзакция гарантированно была добавлена в блок, нужно заплатить примерно 2-3 рубля комиссии. Практически можно проводить и бесплатные транзакции, но надо, что бы в итоге была проведена хоть одна платная, что бы вся цепочка подтвердилась. Это все теории, теперь давайте перейдем к практике. Давайте создадим простейшую систему управления БД на основе блокчейна. Базовой функцией такого сервиса конечно же будет добавление и извлечение данных из БД. Для проведения транзакций мы будем использовать API blockchain.info так как оно очень простое. Регистрируем биткоин адрес на blockchain.info (вам нужно запомнить $guid уникальный id кошелька, собственно сам биткоин адрес, и два пароля к нему), кладем туда немного btc. Покупаем дешевый VDS хостинг, с установленным php. Далее ставим node.js , npm и blockchain-wallet-service . Для этого логинимся под root (доступ прийдет на email при покупке хостинга) вводим следующие 4 команды одну за другой sudo apt-get update sudo apt-get install nodejs sudo apt-get install npm npm install -g blockchain-wallet-service Далее создаем index.php и кладем его в папку www домена. <?php function save_to_blockchain($value) { $hx = send_transaction(“ваш bitcoin адрес”,0.0001,0.0001,$value); return $hx; } function send_transaction($address,$amount,$fee,$note) { $json_data = gile_get_contents(“http://localhost:3000/merchant/$guid/payment?password={main_password}&second_password={second_password}&to=ваш bitcoin адрес&amount=$amount&fee=$fee¬e=”.urlencode($note)); $json_feed = json_decode($json_data); $txid = $json_feed->tx_hash; return $txid; } if ($_POST[‘msg’]) { $tx = save_to_blockchain($_POST['msg']); ?> Ваше сообщение успешно отправлено в сеть, оно будет добавлено в блокчейн биткоина в течении 10 минут и всегда будет доступно по адресу <?=$tx;?> (введите этот ключ в любом поисковике по блокчейну например blockhain.info) <? } ?> <form action=’’ method=’post’> <textarea name=’msg' placeholder='Введите сообщение' class='form-control'></textarea> <input type=submit class=’form-control’ name=’’ value=’Сохранить в blockchain’> </form> Теперь у вас собственный проект на основе блокчейна биткоина :)
- 2 ответа
-
2
-
- php
- blockchain
-
(и ещё 1 )
C тегом:
-
Кто мы? - Молодая стремительно развивающаяся компания. Кто ты? - Молодой, амбициозный PHP программист с вполне неплохим опытом работы, хорошим резюме и готовым на все тяжкие.) Что нам от тебя нужно? - Знание PHP, MySQL, git, любого из современных MVC фреймворков. Уметь писать правильный, задокументированный код. Что мы хотим? - Наша основая цель - запуск и поддержка проекта. Что мы даем? - Офис, рядом с метро, ЗП от 50 т.р. в месяц (на руки), компьютер, наушники, да чай с печеньками. Что мы гарантируем? - Техническое задание. Адекватного руководителя. Отсутствие задержек ЗП. Что мы ждем от тебя? - Пунктуальность. Ответственность. Креативность График работы: 5-ти дневка. На выбор, либо с 9-00 до 18-00, либо с 10-00 до 19-00, либо с 11-00 до 20-00, ну либо с 12-00 до 21-00 соответственно) Мы находимся: г. Санкт-Петербург. Наши контакты: ЛС на этом сайте)) А там уже договоримся. Сразу присылайте свои резюме и описывайте что конкретно вы делали в проекте.
-
Есть проект, написанный на фреймворке Laravel, БД - MySQL. Проект не закончен, есть ТЗ на доработку. Нужно доработать проект, исходя из ТЗ + прикрутить и настроить Sphinx. От вас ждем портфолио +кратко за какую часть работы отвечали. Навыки верстки будут плюсом. Вышлем ТЗ и доступы к тестовому серверу для оценки сроков и стоимости. В перспективе ищем разработчика для поддержки проекта.
-
Мы стартап крупной российской IT компании мы ищем двух Yii PHP developer (г.Москва) Требования: Уверенное владение языком php, Опыт работы и глубокое понимание принципов фреймворка yii, Умение подключить php к различным СУБД и системам кеширования mysql, postgresql, redis, memcaсhed, Понимание принципов проектирования REST API, Умение разбираться в чужом коде, Опыт работы в финансовом(биржевом) секторе, Опыт работы с биткоин проектами - желательно, Обязательно иметь доведенные до production проекты, Умение работать в команде (умение спросить мнения/совета других и прислушаться к нему), Многозадачность, Стрессоустойчивость, Свой ноутбук для работы. Чем придется заниматься: Работа с существующим проектом на базе yii (разбираться в коде), Написание и редактирование обработки вызовов API, Завершение миграции с mysql на postgresql, Настройка взаимодействия проекта с другими частями системы (базы данных, вычислительные модули) Бонусы: Заработная плата обсуждается по результатам собеседования, График: ПН-ПТ, ~10-19, (2 дня в офисе, 3 дня можно удаленно), гибкий график, Испытательный срок 3 мес Резюме и вопросы: lutsiagorelova@yahoo.com
- 1 ответ
-
- биржа
- разработчики
-
(и ещё 4 )
C тегом:
-
Вчера на IRC-канале ##mtgox-chat некто под ником nanashi____ представился как участник группы хакеров, которая только что взломала сервер Mt.Gox, чтобы разобраться в причинах известных событий с кражей 850 тыс. биткоинов. Nanashi сказал, что им удалось получить дамп базы данных и другую информацию, в том числе большую базу со сканами паспортов клиентов биржи. Он предоставил следующие ссылки: Аудиозапись разговора исполнительного директора Mt.Gox с банкиром, который держал средства на счетах биржи (на японском) Фрагмент кода Mt.Gox (на PHP) Хакер опубликовал личные данные некоторых сотрудников Mt.Gox, в том числе телефонные номера и домашние адреса. Nanashi сообщил о планах опубликовать дополнительную информацию в будущем, но сканы паспортов выкладывать не будут. Лог чата с участием Nanashi Что касается кода PHP, то это скрипт обработки транзакций на бирже. Он очень плохо написан и содержит несколько ошибок. Представители Mt.Gox ранее заявляли, что кража монет случилась из-за ошибки в их реализации Bitcoin-клиента. Судя по всему, «утечка» монет происходила в течение нескольких лет, прежде чем ее обнаружили. Пример того, каким образом могли ошибочно списываться монеты, обсуждался еще в 2009 году, после потери 2609 BTC из-за бага Mt.Gox. источник: http://www.xakep.ru/post/62139/default.asp
-
Для ускорения работ для нашего ресурса ищутся разработчики. Если ты знаешь PHP, имеешь опыт работы с CMS Bitrix, или форумом IPB и есть желание принимать участие в жизни проекта - пиши тут или мне в личку. Работа проектная, оплачиваемая по договоренности.
-
HelloWorld для написания торгового бота: получаем данные в JSON, парсим и обрабатываем их
Exdeath опубликовал запись в блоге в Exdeath's блог
Возможно это первая часть цикла "HelloWorld для написания торгового бота", а возможно единственный HelloWorld от меня, я пока ещё точно не могу сказать. Мой пример будет на Flash ActionScript 3. Во-первых я "на ты" именно с флешем. Во-вторых, в сети уже есть множество примеров-hellworldов для Гокса и BTC-E, на многих языках, но ActionScript 3 я не видел. И в-третьих, флеш позволяет создавать интерфейсы на самый любой вкус без каких-либо ограничений. Интерфейс можно сделать удобным и практичным, а при необходимости, ещё и красивым и динамичным. Для создания бота без GUI я бы предпочёл Python или Perl. Но используя GUI, можно создать торговые инструменты с подсказками, автоматизацией и с функцией автопилота, в работу которого можно в любой момент вмешаться. По-моему, это намного лучше чем демон, работающий сам по себе. Однако, в рамках данной статьи в примерах кода пока что не будет запросов на сделки и покупку/снятие ордеров, хотя это и немаловажно, при написании бота это все-таки не самый первый этап, а некий HelloWorld №2. Решения о сделках или ордерах должны приниматься на основе данных, полученных от бирж, поэтому самый первый этап это получение данных и их обработка. А как только данные из JSON будут преобразованы в переменные и/или массивы ими можно будет свободно пользоваться в программном коде для решения необходимых задач. В качестве примера обработки спарсинного JSON, будет приведён исходный код графического отображения глубины торгов(как на mtgoxlive.com). Для этого нужно получить и спарить данные о глубине, полученные от биржи. Чтобы приведённый мной код успешно скомпилировался, я рекомендую компилировать под версию флешплеера не ниже 11.2. Под 10-ю можно даже не пытаться: там нет встроенного парсера JSON, который будет использоваться в моём коде. Также будет чуток PHP-кода. Это связано с тем, что политика безопасности флешплеера не позволяет подгрузить данные с другого домена. Это обходится с помощью вебсервера и PHP. Итак данные о глубине торгов биржи BTC-E по паре btc/usd расположены тут: https://btc-e.com/api/2/btc_usd/depth (ранее: https://btc-e.com/api/2/1/depth) Чтобы они были доступны с того же домена на котором расположен swf-файл, нужно использовать следующий php-код: <?php $q = $_GET['q']; if($q=="depth_btcusd")$page = file_get_contents("https://btc-e.com/api/2/btc_usd/depth"); if($q=="trades_btcusd")$page = file_get_contents("https://btc-e.com/api/2/btc_usd/trades"); if($q=="ticker_btcusd")$page = file_get_contents("https://btc-e.com/api/2/btc_usd/ticker"); if($q=="depth_btcrur")$page = file_get_contents("https://btc-e.com/api/2/btc_rur/depth"); if($q=="trades_btcrur")$page = file_get_contents("https://btc-e.com/api/2/btc_rur/trades"); if($q=="ticker_btcrur")$page = file_get_contents("https://btc-e.com/api/2/btc_rur/ticker"); #и т. д. echo $page; ?> Переменная q нужна, чтобы не плодить огромное количество PHP-файлов, а использовать один. Запрос на получение глубины торгов по паре btc/usd с локального домена будет выглядеть так: localhost/btce.php?q=depth_btcusd Что касается гокса, он также отдаёт данные в формате JSON немного другим способом и использование file_get_contents не прокатает, но можно сделать так: <?php $q = $_GET['q']; if($q=="depth_btcusd")$ch = curl_init('https://mtgox.com/api/0/data/getDepth.php?Currency=USD'); #и аналогично с прошлым примером curl_setopt($ch, CURLOPT_USERAGENT, "GoxFlashViewer public alpha"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $page=curl_exec($ch); curl_close($ch); echo $page; ?> В результате, на своём хосте мы получим способ выдачи и разметку JSON в абсолютно том же виде, как и для BTC-E. Для меня это было немаловажно т.к. к тому времени, как я прикрутил cURL с своему Nginx(без Apache), код для графического представления глубины для BTC-E уже был написан. Далее приведу исходник флешки, снабжённый некоторыми комментариями в функции, строящей график, обрабатывая полученные данные: package { import flash.display.StageAlign; import flash.display.StageScaleMode; import ru.exdeath.as3gui.WindowSkin; //классы Window и WindowSkin написаны мной; их код также будет приведён import flash.display.Sprite; import ru.exdeath.as3gui.Window; import flash.system.Security; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.display.MovieClip; import flash.text.TextField; /** * @author exdeath */ [sWF(width="700", height="580", frameRate="60", backgroundColor="#ffffff")] public class btce extends Sprite{ public function btce() { //отключаем изменение маштабирования //при изменении размера рабочей области: stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; var loadComplete:Boolean=false; var request_depth:URLRequest = new URLRequest("http://localhost/btce.php?q=depth_btcusd"); var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler); loader.load(request_depth); var txt:TextField = new TextField(); txt.selectable=false; this.addChild(txt); try { loader.load(request_depth); } catch (error:ArgumentError) { txt.text="An ArgumentError has occurred."; } catch (error:SecurityError) { txt.text="A SecurityError has occurred."; } var n:uint=0; addEventListener(Event.ENTER_FRAME, onEnterFrame); function onEnterFrame(event:Event):void{ if(!loadComplete){ txt.text="Загрузка."; for(var i:uint=0;i<n%3;i++)txt.appendText("."); n++; } } function completeHandler(event:Event):void { loadComplete=true; txt.text="done"; var BtceDepth:Object = JSON.parse(loader.data); var BtceAsks:Array=BtceDepth.asks; var BtceBids:Array=BtceDepth.bids; creatDepthTxt(); createDepthGraph(); function creatDepthTxt():void{ var depthTxt:Window=new Window(450,300,null,"Стакан BTC-e BTC/USD"); addChild(depthTxt); var asksField:TextField=new TextField(); var bidsField:TextField=new TextField(); depthTxt.box.addChild(asksField); depthTxt.box.addChild(bidsField); bidsField.x=200; asksField.width=bidsField.width=200; asksField.height=bidsField.height=300; asksField.border=bidsField.border=true; asksField.text="Предложение:\n"; bidsField.multiline=true; bidsField.htmlText="Спрос:<br>"; for (var i in BtceAsks){ asksField.text+=BtceAsks[i][1]+" по "+BtceAsks[i][0]+"\n"; } for (i in BtceBids){ if(BtceBids[i][1]>10.0)bidsField.htmlText+="<font color='#ff0000'>"+BtceBids[i][1]+" по "+BtceBids[i][0]+"</font><br>"; else bidsField.htmlText+=BtceBids[i][1]+" по "+BtceBids[i][0]+"<br>"; } } function createDepthGraph():void{ var depthGraphSkin:WindowSkin=new WindowSkin(); var depthGraph:Window=new Window(500, 300, depthGraphSkin,"Глубина торгов BTC-e BTC/USD"); addChild(depthGraph); //сдвигаем окно из нуля, чтобы за ним было видно предыдущее depthGraph.x=100; depthGraph.y=200; //рисуем оси координат var x0:Number=250; var y0:Number=290; depthGraph.box.graphics.lineStyle(1); depthGraph.box.graphics.moveTo(x0, 0); depthGraph.box.graphics.lineTo(x0, 300); depthGraph.box.graphics.moveTo(0, y0); depthGraph.box.graphics.lineTo(500,y0); //устанавливаем значения //1px=0.01$ //1px=25btc var stepX:Number=.01; var btcStep:Number=25; //узнаём крайнии значения //trace(BtceBids[0][0],BtceAsks[0][0]); //вычисляем среднее значение, там будет центр var middle:Number=(BtceBids[0][0]+BtceAsks[0][0])/2; trace(middle); var AsksVector:Vector.<Number>=new Vector.<Number>(250); var BidsVector:Vector.<Number>=new Vector.<Number>(250); //пробегаемся по ордерам for (var i in BtceAsks){ //смотрим //цена=BtceAsks[i][0];количество=BtceAsks[i][1]; //прибавляем количество к соотв.значениям for (var j in AsksVector){ if(BtceAsks[0][0]+j*stepX>BtceAsks[i][0])AsksVector[j]+=BtceAsks[i][1]; } } //аналогично для Bids for (i in BtceBids){ for (j in BidsVector){ if(BtceBids[0][0]-j*stepX<BtceBids[i][0])BidsVector[j]+=BtceBids[i][1]; } } //рисуем график depthGraph.box.graphics.lineStyle(2); depthGraph.box.graphics.moveTo(x0, y0); for (j in AsksVector){ //trace(AsksVector[j]); depthGraph.box.graphics.lineTo(x0+j+1, y0-int(AsksVector[j]/btcStep)); } //для Bids depthGraph.box.graphics.moveTo(x0, y0); for (j in BidsVector){ depthGraph.box.graphics.lineTo(x0-j, y0-int(BidsVector[j]/btcStep)); } //рисуем деления колва биткоинов //пока статично, потом сделать опционально depthGraph.box.graphics.lineStyle(1,0xff0000); var valuesY:Vector.<TextField>=new Vector.<TextField>(7); for(i=0;i<7;i++){ depthGraph.box.graphics.moveTo(x0-3,y0-(i+1)*40); depthGraph.box.graphics.lineTo(x0+3,y0-(i+1)*40); valuesY[i]=new TextField(); depthGraph.box.addChild(valuesY[i]); valuesY[i].x=x0+4; valuesY[i].y=y0-(i+1)*40-8; valuesY[i].text=(i+1)+"k"; valuesY[i].selectable=false; valuesY[i].textColor=0xff0000; } //считаем сколько требуется значений //деление будет указывать каждое целое значение курса //т.к. пока всё статично, можно заранее сказать, что 500*0.01$=5$ var valuesXN:int; valuesXN=4; //указываем значение курса в нуле var currentCostTF:TextField=new TextField(); depthGraph.box.addChild(currentCostTF); currentCostTF.text=BtceBids[0][0]+" "+BtceAsks[0][0]; currentCostTF.x=x0+10; currentCostTF.y=y0-20; currentCostTF.textColor=0xff0000; currentCostTF.selectable=false; //рисуем деления var valuesX:Vector.<TextField>=new Vector.<TextField>(valuesXN); //вычисляем местоположение самого левого деления и его значение //значение: var valueMin:uint=int(middle-2.5)+1; //местоположение: var valueMinX:Number=(int(middle-.5)-middle+1.5)*100; var valueXcurrent:Number; for(i=0;i<valuesXN;i++){ valuesX[i]=new TextField(); valuesX[i].selectable=false; valuesX[i].textColor=0xff0000; valueXcurrent=valueMinX+i*100; depthGraph.box.graphics.moveTo(valueXcurrent, y0-3); depthGraph.box.graphics.lineTo(valueXcurrent, y0+3); depthGraph.box.addChild(valuesX[i]); valuesX[i].text=String(valueMin+i); valuesX[i].y=y0-4; valuesX[i].x=valueXcurrent-7; } } } } } } Если вы незнакомы с синтаксисом AS3 и вам непонятна та или иная строчка, то на adobe.com есть отличнейшая документация на русском языке, к которой можно обратиться. вот что получилось(кликабельное превью): Собираюсь выложить в веб, сразу как добавляю в код поддержку всех пар BTC-E и пар гокса с наибольшими объёмами и улучшу юзабилити. Хотя, если кто-нибудь попросит, могу выложить и текущею версию. А далее время от времени планирую добавлять функционал. Буду рад любым предложениям и идеям насчёт того, что требуется реализовать. IDE на скриншоте: кроссплатформенный FDT 5 на основе Eclipse в ОС Ubuntu Linux 12.04.1 с Openbox вместо Unity. И автономный адобовский флешплеер, который можно скачать здесь: http://www.adobe.com.../downloads.html И то и другое доступно под GNU/Linux, Windows и Mac OS X; как для 32-х, так и для 64-х битных версий данных систем. Правда, для работы флешплеера на 64-битном Линуксе нужно доустановить некоторые 32-хбитные пакеты. (Какие именно можно узнать с помощью ldd) Если файл запускается из локальной файловой системы, то скорее всего нужно будет сходить в каталог: ~/.macromedia/Flash_Player/#Security/FlashPlayerTrust (GNU/Linux) C:\Users\<имя пользователя>\AppData\Roaming\Macromedia\Flash Player\#Security\FlashPlayerTrust (Windows 7) C:\Documents and Settings\<имя пользователя>\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust (Windows XP) /Users/<имя пользователя>/Library/Preferences/Macromedia/Flash Player/#Security/FlashPlayerTrust (Mac OS X) Создать там файл с любым именем и расширением .cfg или воспользоваться уже созданным *.cfg И прописать путь к каталогу из которого запускается swf-файл У меня прописано так: //home/exdeath/Dropbox/workspace/fdt/btc/bin/ /home/exdeath/Dropbox/workspace/fdt/btc/bin/ И как и обещал привожу текущие версии моих классов Window и WindowSkin: package ru.exdeath.as3gui { import flash.text.TextField; import flash.events.MouseEvent; import flash.display.Sprite; /** * @author exdeath */ public class Window extends Sprite{ public var box:Sprite = new Sprite; private var title:Sprite = new Sprite; private var TextInTitle:TextField=new TextField(); //public var defaultSkin:WindowSkin = new WindowSkin(); public function Window(width:Number,height:Number,skin:WindowSkin=null,titletext:String=""){ //рисуем //var title:Sprite = new Sprite; if(skin==null)skin=new WindowSkin(); //var titleH:Number=20; this.addChild(title); this.addChild(box); title.graphics.beginFill(skin.titleColor,skin.titleAlpha); title.graphics.lineStyle(skin.titleBorder,skin.titleBorderColor,skin.titleBorderAlpha); title.graphics.drawRect(0, -skin.titleH, width, skin.titleH); title.graphics.endFill(); box.graphics.beginFill(skin.boxColor,skin.boxAlpha); box.graphics.lineStyle(skin.boxBorder,skin.boxBorderColor,skin.boxBorderAlpha); box.graphics.drawRect(0,0,width,height); box.graphics.endFill(); //сдвигаем на высоту title this.y+=skin.titleH; //делаем окошки перетаскиваемыми title.addEventListener(MouseEvent.MOUSE_DOWN, mousePress); title.addEventListener(MouseEvent.MOUSE_UP, mouseRelease); function mousePress(e:MouseEvent):void{ startDrag(); } function mouseRelease(e:MouseEvent):void{ stopDrag(); } //помещаем в верхний слой, когда активно //при клике по окну, поднимаем его наверх (a=при нажатии по title; b=при нажатии по всему окну) //потом надо будет сделать булеву переменную в WindowSkin addEventListener(MouseEvent.MOUSE_DOWN, win2top); //b /* title.addEventListener(MouseEvent.MOUSE_DOWN, win2top); //a doubleClickEnabled = true; addEventListener(MouseEvent.DOUBLE_CLICK, win2top); */ //создаём текстовое поле, в котором будет отображаться название окна title.addChild(TextInTitle); TextInTitle.selectable=false; TextInTitle.textColor=skin.textInTitleColor; TextInTitle.text=titletext; TextInTitle.x=0;//skin.titleH;//отступ для красоты TextInTitle.y=-skin.titleH; TextInTitle.width=this.width; } private function win2top(e:MouseEvent):void { parent.setChildIndex(this, parent.numChildren-1); } } } package ru.exdeath.as3gui { /** * @author exdeath */ public class WindowSkin extends Object{ public var titleH:Number=15; public var titleColor:Number=0x000000; public var titleAlpha:Number=1; public var titleBorder:Number=1; public var titleBorderColor:Number=0x000000; public var titleBorderAlpha:Number=1; public var boxColor:Number=0xFFFFFF; public var boxAlpha:Number=1; public var boxBorder:Number=1; public var boxBorderColor:Number=0x000000; public var boxBorderAlpha:Number=1; public var textInTitleColor:Number=0xFFFFFF; } }