Чтобы флешка не масштабировалась нужен следующий код:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>REZUME!!!</title>
</head>
<body bgcolor="#3C1E00" style="margin:0;padding:0">
<div align="center" id="flashcontent"><embed type="application/x-shockwave-flash" src="images/sketch6.swf" width="100%" height="100%" id="Rezume!!!" name="Rezume!!!" bgcolor="#3C1E00" quality="high" flashvars="url=&MSIE=0&WIN=1">
</embed>
</div>
</body></html>
Он отличается, от кода из Дримвевера.
Вот посмотрите страничка с не масштабируемой флешкой http://www.rezume-vladimir.narod.ru и страничка с масштабируемой http://www.rezume-vladimir.narod.ru/rezume.html
Stage.scaleMode = "noScale";
Я делаю простенькую html страницу, с помощью Дримвевера и вставляю туда ролик. Дримвевер создает такой код для вставки флеш:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="640" height="400">
<param name="movie" value="sketch.swf" />
<param name="quality" value="high" />
<embed src="sketch.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="640" height="400"></embed>
</object>
Когда я открываю полученную страничку в браузере, сама флешка не масштабируется, но, при изменении масштаба, границы ролика либо расширяются, либо сужаются (большая часть ролика не видна). Как сделать (с помощью html или java кода), чтобы при масштабировании границы вообще не менялись (на всех флеш-сайтах это как-то сделано)?? :(
dimchikpc, так как вы настойчиво не хотите уточнять деталей своей проблемы и даже языка, на котором реализуете таблицу, то тогда я выберу то, что мне удобнее. За основу я возьму урок http://edapskov.ru/pages.php?id=240 и изменю там только код.
Код PHP:
<?php
if(isset($_POST['id']) && isset($_POST['q']) && isset($_POST['key'])){
$filename = "test3.txt";
$skey = "Natasha";
$user = trim($_POST['id']);
$q = trim($_POST['q']);
$h = trim($_POST['key']);
$t = time();
if(md5(strtolower($user.$q.$skey))==$h && strlen($user) && strlen($q)){
$arr = array();
$fr = fopen($filename,"r");
$arr = unserialize(fread($fr,filesize($filename)));
fclose($fr);
if($q > $arr[$user][0]){
$arr[$user][0] = $q;
$arr[$user][1] = $t;
}
$str = serialize($arr);
$fw = fopen($filename,"w");
fwrite($fw,$str);
fclose($fw);
echo 'q='.$str;
}
}
Код AS 3.0:
/*
Импортируем необходимые классы.
*/
import flash.display.Sprite;
import flash.display.Stage;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.net.*;
import flash.events.*;
import org.sepy.io.Serializer;
import com.adobe.crypto.MD5;
/*
Объявляет необходимые переменные и присваиваем им значения.
*/
var arr:Array = new Array();// это массив, в котором будут хранится данные для таблицы рекордов
var page:Number = 0;// текущая страница таблицы рекордов
/*
Путь к директории, в которой лежит php-скрипт.
*/
var strUrl:String = "http://edapskov.ru/applications/";
/*
Секретный ключ.
*/
var skey:String = "Natasha";
/*
Ограничения на символы, которые можно ввести через поля ввода.
Вам, скорее всего, это не потребуется, так как данные не будут браться из полей ввода.
Впрочем, фильтрация и проверка корректности данных - штука полезная :-)
*/
id.restrict = "0-9a-zA-Z";
score.restrict = "0-9";
/*
Функция сортировки многомерного массива.
*/
function sortScore(a, b)
{
var aN:int = parseInt(a[1],10);
var bN:int = parseInt(b[1],10);
if (aN > bN)
{
return -1;
}
else if (aN < bN)
{
return 1;
}
else
{
return 0;
}
}
/*
Функция, которая генерирует окно с глобальной таблицей рекордов.
*/
function tabl()
{
/*
Создаём необходимые переменные и присваиваем им значение.
*/
var sw:int = stage.stageWidth;
var sh:int = stage.stageHeight;
var pages:int = Math.floor(arr.length / 10) - 1;
/*
Форматирование текста.
*/
var format:TextFormat = new TextFormat();
format.size = 14;
format.font = "Verdana";
format.color = 0x999999;
format.bold = true;
format.align = TextFormatAlign.CENTER;
/*
Создаём спрайт, который будет для таблицы рекордов контейнером.
*/
var cont:Sprite = new Sprite();
cont.name = "tableofrecords";
addChild(cont);
/*
Создаём спрайт, который будет для таблицы рекордов фоном и будет перехватывать мышиные события.
*/
var fon:Sprite = new Sprite();
fon.graphics.beginFill(0xffffff,1);
fon.graphics.moveTo(0, 0);
fon.graphics.lineTo(sw, 0);
fon.graphics.lineTo(sw, sh);
fon.graphics.lineTo(0, sw);
fon.graphics.endFill();
cont.addChild(fon);
fon.mouseEnabled = true;
/*
Создаём контейнер для таблицы рекордов.
*/
var tfCont:Sprite = new Sprite();
cont.addChild(tfCont);
/*
Генерируем таблицу рекордов.
*/
var max:int = (page + 1) * 10;
var n:int = page * 10;
for (var i:int = 0; n + i < arr.length && n + i < max; i++)
{
for (var j:int = 0; j < arr[n + i].length; j++)
{
/*
Столбец с указанием места игрока.
*/
var num:TextField = new TextField();
tfCont.addChild(num);
num.x = 0;
num.y = i * 20;
num.width = sw / 6;
num.height = 20;
num.border = true;
num.borderColor = 0xcccccc;
num.selectable = false;
num.defaultTextFormat = format;
num.text = " - " + (n + i + 1) + " - ";
/*
Столбец с указанием уникального идентификатора игрока.
*/
var user:TextField = new TextField();
tfCont.addChild(user);
user.x = sw / 6;
user.y = i * 20;
user.width = sw / 6;
user.height = 20;
user.border = true;
user.borderColor = 0xcccccc;
user.selectable = false;
user.defaultTextFormat = format;
user.text = arr[n + i][0];
/*
Столбец с результатами игрока.
*/
var score:TextField = new TextField();
tfCont.addChild(score);
score.x = sw / 6 * 2;
score.y = i * 20;
score.width = sw / 6;
score.height = 20;
score.border = true;
score.borderColor = 0xcccccc;
score.selectable = false;
score.defaultTextFormat = format;
score.text = arr[n + i][1];
/*
Столбец с результатами игрока.
*/
var date:TextField = new TextField();
tfCont.addChild(date);
date.x = sw / 6 * 3;
date.y = i * 20;
date.width = sw / 6;
date.height = 20;
date.border = true;
date.borderColor = 0xcccccc;
date.selectable = false;
date.defaultTextFormat = format;
date.text = arr[n + i][2];
}
}
/*
Навигация по страницам глобальной таблицы рекордов.
*/
var nav:TextField = new TextField();
tfCont.addChild(nav);
nav.x = 0;
nav.y = 10 * 20 + 20;
nav.width = sw / 6 * 4;
nav.height = 20;
nav.selectable = false;
nav.defaultTextFormat = format;
nav.addEventListener(TextEvent.LINK, linkText);
if (Math.ceil(arr.length / 10) > 1)
{
if (page == 0)
{
nav.htmlText = '<a href="event:exit">Exit</a> | <a href="event:next">Next >></a>';
}
else if (page > 0 && page < pages)
{
nav.htmlText = '<a href="event:prev"><< Prev</a> | <a href="event:exit">Exit</a> | <a href="event:next">Next >></a>';
}
else
{
nav.htmlText = '<a href="event:prev"><< Prev</a> | <a href="event:exit">Exit</a>';
}
}
else
{
nav.htmlText = '<a href="event:exit">| Exit |</a>';
}
/*
Позиционируем контейнер с глобальной таблицей рекордов.
*/
tfCont.x = sw / 6;
tfCont.y = (sh - (12 * 20)) / 2 - 20;
}
/*
Функция, которая отвечает за навигацию по многостраничной таблице рекордов и закрывает окно с таблицей рекордов.
*/
function linkText(event:TextEvent):void
{
var str:String = event.text;
if (str == "prev")
{
page--;
tabl();
}
else if (str == "next")
{
page++;
tabl();
}
else
{
removeChild(getChildByName("tableofrecords"));
}
}
/*
Функция, которая запускается после успешного получения ответа от сервера.
*/
function onComplete(event:Event)
{
animLoad.visible = false;
/*
Очищаем поле вывода ошибок.
*/
mes.text = "";
/*
Очищаем массив, в котором хранится таблица рекордов.
*/
arr.length = 0;
/*
По умолчанию показываем первую страницу глобальной таблицы рекордов.
*/
page = 0;
/*
Принимаем данные от php-скрипта и переводим их в формат, удобный для работы в ActionScript.
*/
var obj:Object = Serializer.unserialize(event.target.data.q);
/*
Можно, конечно, работать и с ассоциативным массивом, но лично мне привычнее иметь дело с индексированным массивом.
Поэтому я ассоциативный массив превращаю в индексированный.
*/
for (var name in obj)
{
arr.push([name, obj[name][0], obj[name][1]]);
}
/*
Сортирую массив по результатам игроков (я исхожу из того, что результат игрока является числовым значение).
Если результат игрока представлен строкой, то данную сортировку пропускаем.
*/
arr.sort(sortScore);
/*
Запускаем функцию, генерирующую глобальную таблицу рекордов.
*/
tabl();
}
/*
Функции, которые будут вызваны в случае возникновения ошибок при работе с сервером.
*/
function onSecurityErrorHandler(event:SecurityErrorEvent):void
{
mes.text = "SecurityErrorEvent";
}
function onIoErrorHandler(event:IOErrorEvent):void
{
mes.text = "IOErrorEvent";
}
/*
Отправляем данные и готовимся к получению ответа от сервера.
*/
btn.addEventListener(MouseEvent.CLICK, btnFunc);
function btnFunc(event:MouseEvent):void
{
animLoad.visible = true;
var url:URLRequest = new URLRequest(strUrl + "test3.php");
url.method = URLRequestMethod.POST;
var variables:URLVariables = new URLVariables();
variables.id = id.text;
variables.q = score.text;
variables.key = MD5.hash(String(variables.id + variables.q + skey).toLowerCase());
url.data = variables;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, onComplete);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityErrorHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, onIoErrorHandler);
loader.load(url);
}
/*
Делаем мувик-псевдопрелоадер невидимым.
Этот мувик будет видимым только тогда, когда идёт обмен данными между сервером и флеш-приложением.
*/
animLoad.visible = false;
animLoad.mouseEnabled = true;
Обратите внимание, что obj[name][1] - это количество миллисекунд, прошедших с 0:00:000 1 января 1970 года. Приведите это значение к типу данных Number и передайте в качестве параметра в Date(). Таким нехитрым образом можно конвертировать миллисекунды в любой удобный для вас формат вывода даты и времени.
это я вас в последний раз беспокою
Оф. руководство вполне достойное, особенно для новичка (приложу к ответному письму).
А в чём конкретно заключается ваша проблема?
Что до кода вставки, то я, как правило, использую такой вариант:
<object type="application/x-shockwave-flash" data="myswf.swf" height="400" width="550"><param name="movie" value="myswf.swf"></object>
Вариант простой, но никто не жаловался :-)