Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //Начальная настройка слайдеров.
- angleSpeedSlider.value = 10;
- angleSpeedSlider.minimum = 1;
- angleSpeedSlider.maximum = 30;
- zSpeedSlider.value = 7;
- zSpeedSlider.minimum = 1;
- zSpeedSlider.maximum = 20;
- radiusSlider.value = 7;
- radiusSlider.minimum = 1;
- radiusSlider.maximum = 20;
- //Максимальная глубина квадратов.
- const MAXIMUM_Z:Number = 450;
- //Количество квадратов.
- const NUMBER_OF_BOXES:Number = 14;
- //Создаем массив, который будет содержать квадраты.
- var boxes:Array = new Array();
- //Задаем фокусное расстояние.
- var focalLength:Number = 300;
- //Задаем точку появления квадратов.
- var vanishingPointX:Number = stage.stageWidth / 2;
- var vanishingPointY:Number = 20;
- //Задаем 3Д пол для квадратов.
- var floor:Number = 80;
- //Задаем начальную глубину.
- var startingDepth:Number = MAXIMUM_Z;
- //Задаем расстояние по оси Z между соседними квадратами.
- var zDistance:Number = 50;
- //Задаем скорость движения квадратов по оси Z.
- var zSpeed:Number = -(zSpeedSlider.value);
- //Мы назначаем различный стартовый угол для каждого квадрата (мы увеличиваем его позже).
- var angle:Number = 0;
- //Угловое различие между квадратами
- var angleDifference:Number = 0.3;
- //Скорость изменения угла между квадратами.
- var angleSpeed:Number = angleSpeedSlider.value * 0.01;
- //Радиус траектории движения квадратов.
- var radius:Number = radiusSlider.value * 10;
- //Этот цикл создает и размещает квадраты (первый квадрат находится дальше всех).
- for (var i=0; i < NUMBER_OF_BOXES; i++) {
- //Создается новый квадрат.
- var box:MyBox = new MyBox();
- //Расчитываем 3Д положение по оси Х (мы сделаем волну синуса).
- box.xpos3D = Math.sin(angle) * radius;
- //Сохраняем информацию о значении угла квадрата.
- box.currentAngle = angle;
- //Увеличиваем стартовый угол следующего квадрата.
- angle += angleDifference;
- //3Д позиция по оси У у всех квадратов одинаковая.
- box.ypos3D=floor;
- //Задаем положение квадрата по оси Z. Чем больше Z, тем дальше квадрат от нас.
- box.zpos3D=startingDepth;
- //Обновляем начальную глубину для следующего квадрата.
- startingDepth-=zDistance;
- //Расчитываем размер квадрата относительно его положения по оси Z.
- var scaleRatio = focalLength/(focalLength + box.zpos3D);
- //Задаем размеры квадрата
- box.scaleX=box.scaleY=scaleRatio;
- //Размещаем квадрат на сцене. Переводим 3Д координаты в 2Д.
- box.x=vanishingPointX+box.xpos3D*scaleRatio;
- box.y=vanishingPointY+box.ypos3D*scaleRatio;
- //Помещаем квадрат в массив.
- boxes.push(box);
- //Добавляем квадрат в список отображения.
- addChild(box);
- }
- //Используем событие ENTER_FRAME для анимации.
- addEventListener(Event.ENTER_FRAME, enterFrameHandler);
- //Эта функция вызывается каждый кадр.
- function enterFrameHandler(e:Event):void {
- //Получаем динамические скорости от наших ползунков.
- angleSpeed=angleSpeedSlider.value*0.01;
- zSpeed = -(zSpeedSlider.value);
- radius = radiusSlider.value * 10;
- //Цикл перебивает квадраты.
- for (var i=0; i < NUMBER_OF_BOXES; i++) {
- //Сохраняем квадрат в локальной переменной.
- var box:MyBox = (MyBox)(boxes[i]);
- //Обновляем позицию по оси Z.
- box.zpos3D+=zSpeed;
- //Обновляем угол квадрата.
- box.currentAngle+=angleSpeed;
- //Если zpos3D <= -focalLength, то помещаем квадрат в самое начало, позади всех других.
- if (box.zpos3D<=- focalLength) {
- //Сохраняем последний квадрат в локальной переменной.
- //Последный квадрат всегда первый в массиве - это результат действия функции сортировки sortZ().
- var lastBox:MyBox = (MyBox)(boxes[0]);
- //Размещаем квадрат позади последнего.
- box.zpos3D=lastBox.zpos3D+zDistance;
- //Получаем новый угол для квадрата (Угол такой же, как у последнего квадрата, минут угловое отличие angleDifference).
- box.currentAngle=lastBox.currentAngle-angleDifference;
- }
- //Расчитываем новую позицию по оси Х.
- box.xpos3D=Math.sin(box.currentAngle)*radius;
- //Расчитываем размер квадрата.
- var scaleRatio = focalLength/(focalLength + box.zpos3D);
- //Задаем размер квадрата.
- box.scaleX=box.scaleY=scaleRatio;
- //Задаем прозрачность квадрата по альфа каналу в зависимости от размера квадрата.
- box.alpha=scaleRatio-0.5;
- //Размещаем квадрат на сцене. Переводим 3Д координаты в 2Д.
- box.x=vanishingPointX+box.xpos3D*scaleRatio;
- box.y=vanishingPointY+box.ypos3D*scaleRatio;
- }
- //Сортируем квадраты по глубине.
- sortZ();
- }
- //Функция сортировки квадратов, чтобы они отображались корректно.
- function sortZ():void {
- //Сортировка квадратов таким образом, что квадрат в наибольшим значением Z всегда был вначале массива.
- boxes.sortOn("zpos3D", Array.NUMERIC | Array.DESCENDING);
- //Задается новый индекс квадрата в списке отображения квадратов.
- for (var i:uint = 0; i < NUMBER_OF_BOXES; i++) {
- setChildIndex(boxes[i], i);
- }
- }
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //Это импорт твина для анимации текста.
- import fl.transitions.Tween;
- import fl.transitions.easing.Regular;
- //Это начальное время отсчета.
- var n:uint = 0;
- //Создаем экземпляр нашего мувиклипа, который будет анимироваться.
- var tBig:myMC = new myMC();
- //Помещаем его в центр.
- tBig.y = 240;
- tBig.x = 320;
- //Отключаем реакцию текстового поля на мышь.
- tBig.myText.mouseEnabled = false;
- //Добавляем мувиклип в список отобращения.
- stage.addChild( tBig );
- //Делаем тоже самое еще раз для еще одного экземпляра, который анимироваться не будет.
- var t:myMC = new myMC();
- t.y = 240;
- t.x = 320;
- t.myText.mouseEnabled = false;
- stage.addChild( t );
- //Создаем таймер и задаем время таймера 1 секунда (1000 миллисекунд).
- var myTimer:Timer = new Timer( 1000, 0 );
- //Запускаем таймер.
- myTimer.start();
- //Назначаем слушатель событий таймера.
- myTimer.addEventListener( TimerEvent.TIMER, Count );
- //Создаем функцию, которая будет запускаться как только сработает таймер ( 1 раз в секунду ).
- function Count( e:TimerEvent ):void
- {
- //Задаем текст нашим текстовым полям.
- tBig.myText.text = String( n );
- t.myText.text = String( n );
- //Увеличиваем наш счетчик.
- n += 1;
- //Анимируем первый мувиклип.
- new Tween( tBig, "alpha", Regular.easeOut, 1, 0, 1, true );
- new Tween( tBig, "scaleX", Regular.easeOut, 1, 20, 1, true );
- new Tween( tBig, "scaleY", Regular.easeOut, 1, 20, 1, true );
- }
- //Конец, а кто читал - молодец.
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- import fl.events.ColorPickerEvent;
- import flash.geom.ColorTransform;
- // При запуске сделаем белый цвет текущим.
- myColorPicker.selectedColor = 0xffffff;
- // Создадим переменную, которая будет содержать информацию о цвете нашего МувиКлипа.
- var colorInfo:ColorTransform = myMovieClip.transform.colorTransform;
- // Добавим слушатель на событие смены цвета компонента ColorPicker.
- myColorPicker.addEventListener(ColorPickerEvent.CHANGE, colorChanged);
- function colorChanged(e:ColorPickerEvent):void
- {
- // Передадим переменной, содержащей цвет нашего МувиКлипа, новый выбранный цвет.
- colorInfo.color = myColorPicker.selectedColor;
- // Зададим нашему МувиКлипу новый цвет.
- myMovieClip.transform.colorTransform = colorInfo;
- // Отобразим выбранный цвет в шеснадцатиричном виде.
- myCurrentColor.text ="Текущий цвет: " + String(myColorPicker.hexValue);
- }
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- import vk.*;//импорт библиотеки(в исходнике)
- //переменные для VkApi
- var wrapper:Object;
- var api:VkApiNode;
- var api_id:Number=111111;//ID вашего приложения
- var api_secret:String="2222222";//секрет вашего приложения
- var server_url:String;
- var viewer_id:Number;
- var query:String;
- var api_XML:XML = new XML();
- var api_loader:URLLoader = new URLLoader();
- var api_request:URLRequest;
- //мувики
- var Loading:MovieClip = new mc_press();
- //массив друзей
- var FriensList:Array = new Array();
- //------------------------------
- this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
- function onAddedToStage(e:Event):void {
- wrapper = Object(this.parent.parent);
- Security.allowDomain("*");
- stage.dispatchEvent(new Event(Event.DEACTIVATE));
- stage.dispatchEvent(new Event(Event.ACTIVATE));
- server_url = wrapper.application.parameters.api_url + '?';//определяем адресс сервера
- viewer_id = wrapper.application.parameters.viewer_id;//узнаем id просматривающего приложение
- api = new VkApiNode(viewer_id,api_id,api_secret, false, "XML", "2.0", server_url);//делаем копию библиотеки
- if (wrapper.application.parameters.is_app_user == 1) {//если пользователь установил приложение
- if(!Boolean(wrapper.application.parameters.api_settings & 2))//если есть нет доступа к друзьям
- {
- AppSettings();//вызывам окно с настройкими
- }else{
- PUSK();//продолжаем запуск приложения
- }
- }else{
- AppInstal();//вызывам окно с добавлнием на страницу
- }
- }
- //-----------------------------
- function AppSettings():void
- {
- wrapper.external.showSettingsBox(+2);//автоматически вызываем окно настроек приложения
- }
- function onApplicationAdded(e:Object):void
- {
- if(!Boolean(wrapper.application.parameters.api_settings & 2))
- {
- AppSettings();//автоматически вызываем окно с добавлнием на страницу
- }else{
- PUSK();//продолжаем запуск приложения
- }
- }
- //-----------------------------
- function onSettingsChanged(e:Object):void
- {
- if(!Boolean(e.settings & 2))
- {
- PUSK();//продолжаем запуск приложения
- wrapper.removeEventListener("onSettingsChanged", onSettingsChanged );//удаляем слушатель
- }
- }
- //-----------------------------
- function AppInstal():void
- {
- wrapper.external.showInstallBox();//автоматически вызываем окно добавления приложения на страницу
- }
- //-----------------------------
- function PUSK():void
- {
- Loading.x = wrapper.application.stageWidth /2;//выравниваем
- Loading.y = wrapper.application.stageHeight /2;
- addChild(Loading);//добавляем на сцену окошко с зугрузкой
- query = api.getFriends();//создаем ссылку с помошью библиотеки
- api_request=new URLRequest(query);//загружаем данные с ссылки
- api_loader.addEventListener(Event.COMPLETE, onloadedPUSK);//что произойдет при завершении загрузки
- api_loader.load(api_request);//загружаем
- FriendsPanel.addEventListener(Event.CHANGE, onFrendAva);//добавляем к списку друзей слушатель, который сработает когда пользователь изменит положение бегунка на нем
- }
- //-----------------------------
- function onloadedPUSK(e:Event):void
- {
- api_loader.removeEventListener(Event.COMPLETE, onloadedPUSK);//удаляем старый слушатель
- api_XML = XML(api_loader.data);//сохраняем данные в переменную
- if(api_XML.children().length() > 100)//если друзей более 100
- {
- cutListFriend();//вызваем функцию для загрузки больших списков друзей
- }else{
- removeChild(Loading);//удаляем окно загрузки
- for (var i:int=0; i<api_XML.children().length();i++)//запускаем цикл
- {
- FriensList[i] = api_XML.children()[i].toString();//пихаем id друзей в массив
- }
- query = api.getProfiles(FriensList, ['first_name,last_name']);//создаем ссылку с помошью библиотеки
- api_request=new URLRequest(query);//загружаем данные с ссылки
- api_loader.addEventListener(Event.COMPLETE, onloadedFriens);//что произойдет при завершении загрузки
- api_loader.load(api_request);//загружаем
- }
- }
- //-----------------------------
- function cutListFriend():void
- {
- var FriendsN:Number = 0;//обьявляем перемнную "счетчик"
- for(var i:int=0; i<api_XML.children().length();i++)//запускаем цикл
- {
- FriendsN += 1;//ставим счетчик
- FriensList[i] = api_XML.children()[i].toString();//пихаем друга в массив
- if(FriendsN == 100)//когда счетчик дощел до 100
- {
- FriendsN = 0;//обнуляем его
- query = api.getProfiles(FriensList, ['first_name,last_name']);//создаем ссылку с помошью библиотеки
- api_request=new URLRequest(query);//загружаем данные с ссылки
- api_loader.addEventListener(Event.COMPLETE, onloadedFriens);//что произойдет при завершении загрузки
- api_loader.load(api_request);//загружаем
- FriensList = new Array();//чистим массив
- }else if((api_XML.children().length() - i) == 1)//если счетчик не дошел до 100, но друзей осталось меньше 100
- {
- FriendsN = 0;//обнуляем счетчик
- query = api.getProfiles(FriensList, ['first_name,last_name']);//создаем ссылку с помошью библиотеки
- api_request=new URLRequest(query);//загружаем данные с ссылки
- api_loader.addEventListener(Event.COMPLETE, onloadedFriens);//что произойдет при завершении загрузки
- api_loader.load(api_request);//загружаем
- }
- }
- removeChild(Loading);//удаляем окно загрузки
- }
- //-----------------------------
- function onloadedFriens(e:Event):void
- {
- api_loader.removeEventListener(Event.COMPLETE, onloadedFriens);//удаляем старый слушатель
- api_XML = XML(api_loader.data);
- for (var i:int=0; i<api_XML.children().length();i++)//запускаем цикл
- {
- FriendsPanel.addItem({label:api_XML.children()[i].first_name + " " + api_XML.children()[i].last_name, data:api_XML.children()[i].uid});//добавляем в лист на сцене пункт
- }
- }
- //-----------------------------
- function onFrendAva(e:Event):void
- {
- //загружаем аватар друга, которого выбрали из списка
- query = api.getProfiles([e.target.selectedItem.data], ['photo_big']);
- api_request=new URLRequest(query);
- api_loader.addEventListener(Event.COMPLETE, onloadedFriendAva);
- api_loader.load(api_request);
- }
- function onloadedFriendAva(e:Event):void
- {
- api_XML = XML(api_loader.data);
- FriendAva.source = api_XML..photo_big.toString();//показываем аватар
- }
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- import vk.*;
- //импотритуем все что нам надо
- //все это необходимое есть в архиве с исходником
- var api_id:Number =1605383;//ID приложения, которое мы получили вначале
- var api_secret:String = "IQyfnhjlTc";//Ключ приложения, которое мы получили вначале
- var viewer_id:Number;//id пользователя который просматривает приложение
- var url_loader1:URLLoader = new URLLoader();//лоадеры
- var url_request1:URLRequest = new URLRequest();
- var url_loader2:URLLoader = new URLLoader();
- var url_request2:URLRequest = new URLRequest();
- var url_loader3:URLLoader = new URLLoader();
- var url_request3:URLRequest = new URLRequest();
- var api:VkApiNode;//создаем переменную класса, каждый вызов к Api буде создаваться ее экземпляр
- var query:String;// переменная пути запроса в URL, а данные будут передаваться методом GET
- var timer:Timer = new Timer(2500);//таймер, по срабатыванию которого будем обновять поле сообщений 2.5, самое оптималное время, но меняйте как душе угодно
- var save:XML=new XML();//XML который хранит сообщения
- var VkAvatar:Loader = new Loader();//Лоадер для аватара
- var VkAvatarUrl:URLRequest = new URLRequest();//путь аватара
- var wrapper:Object;//обьект <<контейнер>>, который загружает в себя приложение
- //----------------------------------
- this.addEventListener( Event.ADDED_TO_STAGE, onAddedToStage );//событие произойдет, когда контейнер полностью загрузит приложение
- //----------------------------------
- function onAddedToStage(e: Event):void {
- Security.allowDomain("*");
- stage.dispatchEvent(new Event(Event.DEACTIVATE));//решение проблемы неработоспособности некоторых элементов
- stage.dispatchEvent(new Event(Event.ACTIVATE));
- wrapper = Object(this.parent.parent);//определяем контейнер
- viewer_id = wrapper.application.parameters.viewer_id;//передаем переменной знчение id просматривающего приложение
- timer.start();//запускаем таймер
- stage.addEventListener(Event.ENTER_FRAME, Emess);//добавляем слушатели
- btn.addEventListener(MouseEvent.CLICK, onMessGo);
- timer.addEventListener(TimerEvent.TIMER, onGetMess);
- Mes_tf.addEventListener(KeyboardEvent.KEY_DOWN, onMessOtpr);
- api=new VkApiNode(viewer_id,api_id,api_secret);//загружаем профиль пользователя и самый маленький аватар(photo_medium и photo_big большее размеры), который просматривает приложение
- query=api.getProfiles([viewer_id], ['photo']);
- url_request3=new URLRequest(query);
- url_loader3=new URLLoader;
- url_loader3.addEventListener(Event.COMPLETE, EComplet2);//событие произойдет когда профиль загрузится
- url_loader3.load(url_request3);
- }
- //----------------------------------
- function EComplet2(e:Event):void
- {
- var XmlO:XML = new XML(url_loader3.data);//создаем переменную хранящую профиль
- VkAvatarUrl = new URLRequest(XmlO.children()[0].photo);//загружаем аватар
- VkAvatar.load(VkAvatarUrl);
- VkAvatar.contentLoaderInfo.addEventListener(Event.COMPLETE, onVkAvatar);//событие произойдет когда аватар загрузится
- }
- //----------------------------------
- function onVkAvatar(e:Event):void
- {
- VkAvatar.x = 2;
- VkAvatar.y = 2;
- addChild(VkAvatar);//добавляем на сцену аватар
- }
- //----------------------------------
- function onMessOtpr(e:KeyboardEvent):void
- {
- if(e.keyCode == 13)//если пользавеиель нажал клавишу Enter
- {
- if(Mes_tf.text !== "")//если пое для ввода сообщений не пустое
- {
- api=new VkApiNode(viewer_id,api_id,api_secret);//деаем запрос и ставим сообщение в очередь
- query=api.sendMessage(Mes_tf.text);
- url_request1=new URLRequest(query);
- url_loader1=new URLLoader;
- url_loader1.load(url_request1);
- Mes_tf.text = "";
- }
- }
- }
- //----------------------------------
- function Emess(e:Event):void
- {
- if(Mes_tf.text == "")//если поле пустое на кнопку нажать нельзя
- {
- btn.enabled = false;
- }else{//если нет то можно
- btn.enabled = true;
- }
- }
- //----------------------------------
- function onMessGo(e:MouseEvent):void
- {
- api=new VkApiNode(viewer_id,api_id,api_secret);//деаем запрос и ставим сообщение в очередь
- query=api.sendMessage(Mes_tf.text);
- url_request1=new URLRequest(query);
- url_loader1=new URLLoader;
- url_loader1.load(url_request1);
- Mes_tf.text = "";
- }
- //----------------------------------
- function onGetMess(e:TimerEvent):void
- {
- api=new VkApiNode(viewer_id,api_id,api_secret);//загружаем очередь сообщений
- query=api.getMessages();
- url_request2=new URLRequest(query);
- url_loader2=new URLLoader;
- url_loader2.addEventListener(Event.COMPLETE, EComplet);
- url_loader2.load(url_request2);
- }
- //----------------------------------
- function EComplet(e:Event):void {
- if(XML(url_loader2.data).message_info !== null)//если в очереди хоть что-то есть
- {
- save = new XML(url_loader2.data);//передаем XML полученные данные
- for(var i:int=0; i<save.length(); i++)//запускаем цикл
- {
- if(save.children()[i].user_id == viewer_id)//если данное сообщение отправленно пользователем, который просматривает приложение
- {
- pole.htmlText += '<b><font color="#ff0000">' + save.children()[i].user_name + "</font></b>: " + save.children()[i].message;//добавляем строку с его именем и сообщением без ссылки и красного цвета
- }else{//если это отправил другой пользователь
- pole.htmlText += '<b><font color="#000080"><a href="http://vkontakte.ru/id'+save.children()[i].user_id+ '">' + save.children()[i].user_name + '</a>'+ "</font></b>: " + save.children()[i].message;//добавляем строку с его именем с ссылкой на его страничку синего цвета
- }
- }
- }
- }
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- var Seconds:Number = 30; //ЗАДАЕМ СЕКУНДЫ;
- var Minutes:Number = 15; //ЗАДАЕМ МИНУТЫ;
- var Hours:Number = 01; //ЗАДАЕМ ЧАСЫ;
- function TIMER() { //СОЗДАЕМ ФУНКЦИЮ ТАЙМЕРА;
- if ((Seconds > 0) || (Minutes > 0) || (Hours > 0)) { //ЕСЛИ СЕКУНДЫ, ИЛИ МИНУТЫ, ИЛИ ЧАСЫ, БОЛЬШЕ НУЛЯ, ТО...
- Seconds--; //СЕКУНДЫ УМЕНЬШАЕМ НА ЕДИНИЦУ;
- if (Seconds < 0) { //ЕСЛИ СЕКУНДЫ МЕНЬШЕ НУЛЯ, ТО...
- Minutes--; //МИНУТЫ УМЕНЬШАЕМ НА ЕДИНИЦУ;
- Seconds = 59; //СЕКУНДАМ ПРИСВАЕВАЕМ ЗНАЧЕНИЕ 59;
- if (Minutes < 0) { //ЕСЛИ МИНУТЫ МЕНЬШЕ НУЛЯ, ТО...
- Hours--; //ЧАСЫ УМЕНЬШАЕМ НА ЕДИНИЦУ;
- Minutes = 59; //МИНУТАМ ПРИСВАЕВАЕМ ЗНАЧЕНИЕ 59;
- Seconds = 59; //СЕКУНДАМ ПРИСВАЕВАЕМ ЗНАЧЕНИЕ 59;
- }
- }
- if (Seconds <= 9) { //ЕСЛИ СЕКУНДЫ МЕНЬШЕ 9, ТО...
- var SS:String = "0" + Seconds; //СТАВИМ ПЕРЕД СЕКУНДАМИ 0;
- } else { //ИНАЧЕ...
- var SS:String = "" + Seconds; //НЕ СТАВИМ 0;
- }
- if (Minutes <= 9) { //ЕСЛИ МИНУТЫ МЕНЬШЕ 9, ТО...
- var MM:String = "0" + Minutes; //СТАВИМ ПЕРЕД МИНУТАМИ 0;
- } else { //ИНАЧЕ...
- var MM:String = "" + Minutes; //НЕ СТАВИМ 0;
- }
- if (Hours <= 9) { //ЕСЛИ ЧАСЫ МЕНЬШЕ 9, ТО...
- var HH:String = "0" + Hours; //СТАВИМ ПЕРЕД ЧАСАМИ 0;
- } else { //ИНАЧЕ...
- var HH:String = "" + Hours; //НЕ СТАВИМ 0;
- }
- TIMER_TEXT.text = HH + ":" + MM + ":" + SS; //ВЫВОДИМ ЧАСЫ, МИНУТЫ И СЕКУНДЫ В ТЕКСТОВОЕ ПОЛЕ;
- } else { //ИНАЧЕ...
- TIMER_TEXT._visible = false; //СКРЫВАЕМ ТАЙМЕР;
- }
- }
- setInterval(TIMER, 1000); //ФУНКЦИЯ ТАЙМЕРА БУДЕТ ОБНОВЛЯТЬСЯ С ИНТЕРВАЛОМ В 1000 МИЛИСЕКУНД.
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //Клип, в котором будут находиться вершины куба.
- var cube:MovieClip = new MovieClip();
- //Координаты куба в сцене.
- var X:int = 275;
- var Y:int = 200;
- //Длина грани куба.
- var d:uint = 200;
- //Координаты вершин куба.
- var corX:Array = new Array(-d/2,d/2,d/2,-d/2,-d/2,d/2,d/2,-d/2);
- var corY:Array = new Array(-d/2,-d/2,d/2,d/2,-d/2,-d/2,d/2,d/2);
- var corZ:Array = new Array(-d/2,-d/2,-d/2,-d/2,d/2,d/2,d/2,d/2);
- //Массив цветов граней куба.
- var colors:Array = new Array(0x0000cc, 0x00cc00, 0xcc0000, 0xcccc00, 0x00cccc, 0xcc00cc);
- //Массив вершин куба.
- var dots:Array = new Array(8);
- //Массив граней куба.
- var sides:Array = new Array(6);
- //Индексы вершин при построении треугольников граней куба.
- var indices:Vector.<int> = new Vector.<int>();
- indices.push(0,1,2,0,2,3);
- //-------------------------------------------------------------------
- createCube();
- stage.addEventListener(Event.ENTER_FRAME, rotateCube);
- //-------------------------------------------------------------------
- //Функция создания куба.
- function createCube():void
- {
- //Размещаем наш куб в заданных нами координатах.
- addChild(cube);
- cube.x = X;
- cube.y = Y;
- //Добавляем вершины куба в один МувиКлип, чтобы можно было легко ими вращать в сцене.
- for (var i:uint = 0; i < dots.length; i++)
- {
- //Создаем спрайты, которые будут "контейнером" для вершин куба.
- var p:Sprite = new Sprite();
- p.x = corX[i];
- p.y = corY[i];
- p.z = corZ[i];
- cube.addChild(p);
- dots[i] = p;
- }
- //Создаем грани куба.
- for (var j:uint = 0; j < sides.length; j++)
- {
- var s:Sprite = new Sprite();
- addChild(s);
- sides[j] = s;
- }
- //Отрисовываем куб.
- renderCube();
- }
- //-------------------------------------------------------
- //Функция отрисовки куба.
- function renderCube():void
- {
- //Создаем вспомогательные точки.
- var point:Point = new Point();
- var point3d:Vector3D = new Vector3D();
- //Создаем массивы, которые будут хранить глобальные координаты вершин по Х и У.
- var points2dX:Array = new Array(8);
- var points2dY:Array = new Array(8);
- //Переводим локальные координаты вершин куба в глобальные.
- for (var i:uint = 0; i < dots.length; i++)
- {
- point = dots[i].local3DToGlobal(point3d);
- points2dX[i] = point.x;
- points2dY[i] = point.y;
- }
- //Создаем массив со списками вершин граней.
- var vertices:Array = new Array(Vector.<Number>([points2dX[0], points2dY[0],
- points2dX[1], points2dY[1],
- points2dX[2], points2dY[2],
- points2dX[3], points2dY[3]]),
- Vector.<Number>([points2dX[1], points2dY[1],
- points2dX[5], points2dY[5],
- points2dX[6], points2dY[6],
- points2dX[2], points2dY[2]]),
- Vector.<Number>([points2dX[5], points2dY[5],
- points2dX[4], points2dY[4],
- points2dX[7], points2dY[7],
- points2dX[6], points2dY[6]]),
- Vector.<Number>([points2dX[4], points2dY[4],
- points2dX[0], points2dY[0],
- points2dX[3], points2dY[3],
- points2dX[7], points2dY[7]]),
- Vector.<Number>([points2dX[4], points2dY[4],
- points2dX[5], points2dY[5],
- points2dX[1], points2dY[1],
- points2dX[0], points2dY[0]]),
- Vector.<Number>([points2dX[3], points2dY[3],
- points2dX[2], points2dY[2],
- points2dX[6], points2dY[6],
- points2dX[7], points2dY[7]]));
- //Отрисовываем грани куба.
- for (var j:uint = 0; j < sides.length; j++)
- {
- sides[j].graphics.clear();
- sides[j].graphics.beginFill(colors[j]);
- sides[j].graphics.drawTriangles(vertices[j], indices, null, TriangleCulling.NEGATIVE);
- sides[j].graphics.endFill();
- }
- }
- //--------------------------------------------------------
- //Функция ващения куба.
- function rotateCube(e:Event):void
- {
- //Поворачиваем куб по оси У на один градус каждый кадр.
- cube.rotationY -= 1;
- //Отрисовываем новое положение куба.
- renderCube();
- }
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //объявляем переменную с фигурой
- var circle:Shape = new Shape();
- //определяем стиль линии
- circle.graphics.lineStyle(1, 0x000000);
- //определяем цвет заливки, прозрачность
- circle.graphics.beginFill(0x0000FF, 0.5);
- //рисуем круг с координатами .x = 0 , .y = 0 радиусом 50 пикселей.
- circle.graphics.drawCircle(0, 0, 50);
- //добавляем наше "произвение искусства" на сцену
- addChild(circle);
- //пишем функцию
- addEventListener(Event.ENTER_FRAME, e2f);
- function e2f (e:Event):void
- {
- //изменяем координаты нашего круга в каждом кадре(об этом говорит событие ENTER_FRAME)
- circle.x = mouseX;
- circle.y = mouseY;
- }
- //пишем функцию, которая уменьшает наш объект по кручению колёсика мыши
- stage.addEventListener(MouseEvent.MOUSE_WHEEL, m2w);
- function m2w (e:MouseEvent):void
- {
- // width, height = ширина, высота соответственно
- circle.width -= 1;
- circle.height -= 1;
- }
- //пишем функцию, которая увеличивает наш объект по клику
- stage.addEventListener(MouseEvent.CLICK, c2);
- function c2 (e:MouseEvent):void
- {
- circle.width += 1;
- circle.height += 1;
- }
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- //-----------------------------------------------------------------------
- package {
- import flash.net.URLLoader;
- import flash.net.URLRequest;
- import flash.display.*;
- import flash.events.*;
- import flash.text.*;
- public class Main extends Sprite {
- private var api_id:Number=743131; // id вашего приложения
- private var api_secret:String="sE4VlnFfSQ"; // секретный ключ
- private var externalXML:XML;
- private var loader:URLLoader = new URLLoader();
- private var photoLoader:Loader = new Loader();
- private var viewer_id:Number;
- private var sig:String;
- private var uid:String;
- private var bdate_txt:TextField = new TextField();
- private var name_txt:TextField = new TextField();
- public function Main():void {
- // узнаём id пользователя, который просматривает приложение
- var params:Object=LoaderInfo(root.loaderInfo).parameters;
- viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
- // получаем профиль этого пользователя
- getProfile(viewer_id);
- }
- private function getProfile(uid):void { // функция получения профиля
- sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=bdate,photo_bigmethod=getProfilesuids='+uid+'v=2.0'+api_secret);
- var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=bdate,photo_big&v=2.0&sig="+sig);
- loader.load(request);
- loader.addEventListener(Event.COMPLETE, onComplete);
- }
- private function onComplete(event:Event):void { // функция выполняется когда профиль был загружен
- bdate_txt.text='';
- if (loader!=null) {
- externalXML=new XML(loader.data);
- // отображаем дату рождения
- var bdate = externalXML..bdate;
- bdate_txt.text=bdate;
- bdate_txt.x=490;
- bdate_txt.y=380;
- addChild(bdate_txt);
- // отображаем имя и фамилию
- var uname = externalXML..first_name + ' ' + externalXML..last_name;
- name_txt.text=uname;
- name_txt.x=410;
- name_txt.y=360;
- addChild(name_txt);
- // загружаем аватар
- var photo = externalXML..photo_big;
- var request2:URLRequest=new URLRequest(photo);
- photoLoader.load(request2);
- photoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onloaded);
- } else {
- trace("Error!");
- }
- }
- private function onloaded(e:Event):void {
- // отображаем загруженный аватар
- photoLoader.x = (550-photoLoader.width)/2;
- photoLoader.y = (400-photoLoader.height)/2;
- addChild(photoLoader);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement