PDA

Просмотр полной версии : Вставить текст-ссылку в AS3


Aprel
14.09.2013, 22:01
Здравствуйте!
Подскажите, пожалуйста, как вставить текст-ссылку в этот AS3. Нашла классные исходники галереи-клипа FullScreenLib, а как сверху сделать текст-ссылку на возврат на главную страничку не знаю (гуглила, пробовала читать Руководство AS3...). HTML5, CSS3 запросто, а вот в вашей кухне ни бум-бум... Спасибо.

package
{
import com.gfxcomplex.display.PanningFullScreenImage;
import flash.display.Sprite;
import flash.display.StageDisplayState;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;

public class PanningMain extends Sprite
{
private var testing:PanningFullScreenImage;

public function PanningMain():void
{
if (stage)
{
init();
}
else
{
addEventListener(Event.ADDED_TO_STAGE, init);
}
}

private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);

testing = new PanningFullScreenImage("img/001.jpg",true);
testing.addEventListener(Event.COMPLETE, onComplete);
testing.addEventListener(ProgressEvent.PROGRESS, onProgress);
addChild(testing);

stage.addEventListener(MouseEvent.CLICK, onClick);
}

private function onClick(e:MouseEvent):void
{
stage.displayState = StageDisplayState.FULL_SCREEN;
}

private function onProgress(e:ProgressEvent):void
{
trace(String(int((e.bytesLoaded / e.bytesTotal) * 100)));
loading_txt.text = String(int((e.bytesLoaded / e.bytesTotal) * 100));
}

private function onComplete(e:Event):void
{
trace(e);
}

}

}

Wolsh
14.09.2013, 22:43
Aprel, для оформления своего кода надо использовать теги (http://www.flasher.ru/forum/showthread.php?t=122539)

Aprel
14.09.2013, 22:54
Пасибы, учла... А подсказку на вопрос зажали? Я тогда Вас в Питере на вопрос: "Как доехать до Русского музея" на Лиговку отправлю...)

Bletraut
14.09.2013, 23:30
Я не работал с подобной библиотекой, но могу как решение предложить повесить на какой-то объект слушатель и заново загрузить эту библиотеку т.е.


//Пишем в инит
stage.addEventListener(MouseEvent.DOUBLE_CLICK, resetTesting);

//Пишем в коде
public function resetTesting(e:MouseEvent):void
{
testing = new PanningFullScreenImage("img/001.jpg",true);
}


Теперь возможно при двойном клике галерея будет с первой картинки показываться.

C4Grey
14.09.2013, 23:31
Используя TextFormat:
var Format:TextFormat = new TextFormat('Calibri', 18);
Format.underline = true;
Format.target = '_blank';
Format.url = 'http://127.0.0.1';
var Text:TextField = new TextField();
Text.defaultTextFormat = Format;
Text.text = 'Click me';
addChild(Text);
Используя события клика и navigateToURL:

var Text:TextFiled = new TextFiled();
Text.text = 'Click me';
addChild(Text);
Text.addEventListener(MouseEvent.CLICK, OnTextClick);
...
private function OnTextClick(e:MouseEvent):void
{
navigateToURL('http://127.0.0.1');
}
Второй метод сгодится в случае, если нужна навигация внутри флешки, а не по URL(на случай если я неверно понял вопрос). Ну и, само-собой, их можно комбинировать. Чтобы разместить текст в нужных координатах, следует воспользоваться свойствами Text.x и Text.y.

Aprel
15.09.2013, 00:28
C4Grey не получилось...( Не рычи, я сама дура в as3... Я 3 дня ляпала с учебников и нифика... CS6 выдает ошибки 1071 и 1084... Ваще голова кругом идет

C4Grey
15.09.2013, 01:00
1071 - скорее всего, при объявлении переменной где-то нет ключевого слова var
1084 - где-то не закрыта скобка
FlashDevelop умеет показывать места в коде, где случаются подобные ошибки(возможно, и Flash CS6 умеет, уже и не помню).

Aprel
15.09.2013, 01:32
C4Grey Ага... объяснил! Блондинке... ! Точно все на Лиговке будут искать Русский музей и Эрмитаж..) СерыйС4, моно подробнее..

C4Grey
15.09.2013, 04:35
Измененная функция init, которая гарантировано работает:
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);

testing = new PanningFullScreenImage("http://upload.wikimedia.org/wikipedia/commons/6/62/Cthulhu_and_R'lyeh.jpg", true);
addChild(testing);

var Format:TextFormat = new TextFormat('Calibri', 42);
Format.underline = true;
Format.target = '_blank';
Format.url = 'http://google.com';
var Text:TextField = new TextField();
Text.textColor = 0x9F1111;
Text.autoSize = TextFieldAutoSize.LEFT;
Text.defaultTextFormat = Format;
Text.text = 'Click me';
addChild(Text);
}
Если нужно, чтобы текст выводился не поверх картинки - необходимо менять код внутри PanningFullScreenImage, определющий границы панорамирования изображения(сейчас используются размеры всей сцены) и добавлять маску. Да, внутри PanningFullScreenImage используются сторонние компоненты(caurina.transitions.Tweener), их необходимо также подключить к проекту(если это еще не сделано, и проект в таком виде, как он представлен в 0 посте, не компилируется, иначе этот пункт можно игнорировать). Чтобы более подробно ответить на вопрос, мне нужно увидеть струтктуру проекта.

Aprel
15.09.2013, 06:14
C4Grey большое спасибо за подсказки! Я попробовала, но у меня выдает ошибки 1046, 1180, 1120.... ( Все равно буду ковырять... Вы мне только подскажите направление (файлы прикреплю).

C4Grey
15.09.2013, 14:59
Что-то не вижу проблем, это тот же код, что и в нулевом топике, текста там нету. Добавил его точно так же, как писал выше, результат во вложении.

Aprel
15.09.2013, 17:14
C4Grey Пасибы! Я увидела свои ошибки! 1-е: это я переменную var поставила над testing = new PanningFullScreenImage("img/001.jpg", true); вот у меня текст-ссылка и спрятался за картинкой... 2-e: допустила синтаксическую ошибку, когда Ваш код переписывала... Еще раз Спасибо.