Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Передача переменных в Action Script из html не баян
Flash Zone Forum > Macromedia Flash > Начинающим
adepto
 у меня тавкой вод код для загрузки фала на сервер
Цитата
uploadMsg.visible = false;
//новый URLRequest

var URLrequest:URLRequest = new URLRequest(Link);
//поддерживаемые типы файлов (изображения)
var imageTypes:FileFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg; *.jpeg; *.gif; *.png");
//поддерживаемые типы файлов (текст)
var textTypes:FileFilter = new FileFilter("Text Files (*.txt, *.rtf)", "*.txt; *.rtf");
//кладём типы файлов в массив
var allTypes:Array = new Array(imageTypes, textTypes);
//создаём экземпляр FileReference для последующего выбора файлов
var fileRef:FileReference = new FileReference();
//создаём слушателей
fileRef.addEventListener(Event.SELECT, syncVariables);
fileRef.addEventListener(Event.COMPLETE, completeHandler);
fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);
browse_btn.addEventListener(MouseEvent.CLICK, browseBox);
upload_btn.addEventListener(MouseEvent.CLICK, uploadVars);
//действие происходит при нажатии кнопки выбора файла
function browseBox(event:MouseEvent):void {
fileRef.browse(allTypes);
}
//действие происходит при нажатии кнопки загрузки файла
function uploadVars(event:MouseEvent):void {
uploadMsg.visible = true;
fileRef.upload(URLrequest);
upload_btn.visible = false;
}
//передаём переменные в uploader.php
function syncVariables(event:Event):void {
fileDisplay_txt.text = "" + fileRef.name;
blocker.visible = false;
upload_btn.visible = true;
progressBar.width = 2;
var variables:URLVariables = new URLVariables();
variables.todayDate = new Date();
URLrequest.method = URLRequestMethod.POST;
URLrequest.data = variables;
}
//действие происходит после полной загрузки
function completeHandler(event:Event):void {
uploadMsg.visible = false;
blocker.visible = true;
status_txt.text = fileRef.name + " успешно загружен.";
fileDisplay_txt.text = "";
}
//двигаем прогрессбар
function progressHandler(event:ProgressEvent):void {
progressBar.width = Math.ceil(200*(event.bytesLoaded/event.bytesTotal));
}

начитался форумов передаю параметр Link вот так
Цитата
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="../upload.swf?Link=save-file.php />
<param name="quality" value="high" />
<param name="flashvars" value="Link=../save-file.php&" />
<param name="bgcolor" value="#ffffff" />
<embed src="../upload.swf?Link=save-file.php" quality="high" flashvars="Link=../save-file.php&" bgcolor="#ffffff" width="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

написано на цс3
и непашет помогите плиз очень надо
MustLive
Цитата
Передача переменных в Action Script из html

adepto

Во-первых, о том, как передавать данные в ActionScript (в том числе из html) я уже писал на форуме. К примеру, можешь почитать в этой теме.

А во-вторых, у тебя в примере есть не только передача данных из html во флеш, но и загрузка файла на сервер. Что именно у тебя не работает - первое, второе или оба функционала?

Цитата
начитался форумов передаю параметр Link вот так

1. Тебе стоит использовать один метод передачи данных в AS (нет необходимости дублировать передачу переменных). Передавай или через GET или через FlashVars.

2. У тебя через GET и FlashVars передаются разные данные.

Через GET передаётся "save-file.php" (value="../upload.swf?Link=save-file.php). К тому же в коде ты двойную кавычку забыл (в свойстве value тега param).

Через FlashVars передаётся "../save-file.php" (value="Link=../save-file.php&").

Это может повлиять на работу флешки (если второе значение переменной Link некорректно).
adepto
Цитата(MustLive @ 6.01.2011 - 16:19) *
adepto

Во-первых, о том, как передавать данные в ActionScript (в том числе из html) я уже писал на форуме. К примеру, можешь почитать в этой теме.

А во-вторых, у тебя в примере есть не только передача данных из html во флеш, но и загрузка файла на сервер. Что именно у тебя не работает - первое, второе или оба функционала?
1. Тебе стоит использовать один метод передачи данных в AS (нет необходимости дублировать передачу переменных). Передавай или через GET или через FlashVars.

2. У тебя через GET и FlashVars передаются разные данные.

Через GET передаётся "save-file.php" (value="../upload.swf?Link=save-file.php). К тому же в коде ты двойную кавычку забыл (в свойстве value тега param).

Через FlashVars передаётся "../save-file.php" (value="Link=../save-file.php&").

Это может повлиять на работу флешки (если второе значение переменной Link некорректно).

начну сначала загрузка файла работает нормально при условии что задан параметр Link но передать его у меня не получается даже твоим способом (перечитал попробовал <OBJECT...
<PARAM NAME=movie VALUE="../upload.swf">
<PARAM NAME=FlashVars VALUE="Link=http://localhost/elitkarpat/save-file.php">
<EMBED src="../upload.swf" FlashVars="Link=http://localhost/elitkarpat/save-file.php">
</EMBED></OBJECT>) тобиш эсли  втеле пропишу var Link="http://localhost/elitkarpat/save-file.php"; то всё нормально а эсли предаю как описал выше то ведёт себя так буттобы переменная вобще не определена. хотел вот спросить может у флеша есть особое какоенто обращение к подгруженным переменным для защиты от инклуидов всяких? помогите народ кто в курсе
файло тут upload.fla кто поможет заработает напиво
adepto
Цитата(adepto @ 10.01.2011 - 13:26) *
начну сначала загрузка файла работает нормально при условии что задан параметр Link но передать его у меня не получается даже твоим способом (перечитал попробовал <OBJECT...
<PARAM NAME=movie VALUE="../upload.swf">
<PARAM NAME=FlashVars VALUE="Link=http://localhost/elitkarpat/save-file.php">
<EMBED src="../upload.swf" FlashVars="Link=http://localhost/elitkarpat/save-file.php">
</EMBED></OBJECT>) тобиш эсли  втеле пропишу var Link="http://localhost/elitkarpat/save-file.php"; то всё нормально а эсли предаю как описал выше то ведёт себя так буттобы переменная вобще не определена. хотел вот спросить может у флеша есть особое какоенто обращение к подгруженным переменным для защиты от инклуидов всяких? помогите народ кто в курсе
файло тут upload.fla кто поможет заработает напиво


ех вы... а еще форум создали ...
сам разобрался
для того чтоб получить доступ к таким переменным как я и предполагал в начале кода или перед использованием прописать надо:
в АС2 обращатся через:
_root.перемпенная;
в АС3 надо сначала:
import flash.display.Sprite;
import flash.events.Event;
и обращаться через:
this.loaderInfo.parameters.переменная;
пользуйтесь товарищи соискатели.
а вам некомпетентным стыд и позор читайте мануалы и ради вашего блага удалите сайт с рекламой студии а то клиенты очень не любят когда их обманывают насчёт качества wink.gif
MustLive
Цитата
хотел вот спросить может у флеша есть особое какоенто обращение к подгруженным переменным для защиты от инклуидов всяких?

adepto

От серверных инклюдов у флеша нет никакой защиты, т.к. ему они не нужны, потому что это инклюды на стороне сервера. А вот защиты от инклюдов переменных у флеша нет (и даже некоторые улучшения в AS3 не защищают от всех видов атак), что может быть использовано не только для передачи данных (тема которой обсуждалась здесь), но и для проведения атак, о чём я ранее уже писал на форуме.

Цитата
ех вы... а еще форум создали ...
сам разобрался

Во-первых, молодец, что сам разобрался.

Во-вторых, ты первый человек за практически шесть лет работы форума, который несёт подобную охинею и в своих ошибках и недостатке знаний обвиняет форум. Подобное поведение у нас на форуме не допустимо. Поэтому ещё один подобный пост станет твоим последним постом на форуме.

Цитата
в АС2 обращатся через:
_root.перемпенная;
в АС3 надо сначала:
import flash.display.Sprite;
import flash.events.Event;
и обращаться через:
this.loaderInfo.parameters.переменная;

В AS1/AS2 не обязательно использовать _root для доступа к переменным. Т.к. переменные загружаемые снаружи размещаются в руте, поэтому они напрямую доступны коду, размещённому на главном таймлайне (и лишь коду размещённому внутри других объектов понадобится указывать полный путь для доступа к переменным).

У тебя же код на AS3 и тебе нужно использовать соответствующий код для доступа к переменным. То, что ты не знал (и не указал в коде флешки) как обращаться к загруженным переменным - а это базовая вещь для AS3 - то это твои проблемы. Чтение хелпов, мануалов и книг по флешу поможет её решить.
diokh
 скажите пожалуйста - реально освоить АС без какого-то ни было опыта программирования?
tiHo
 дэ, есессно.
HaWK
Цитата
скажите пожалуйста - реально освоить АС без какого-то ни было опыта программирования?

У меня например получилось.
Русская версия IP.Board © 2001-2017 IPS, Inc.