img2.top.Draw(60,x,lift) : такого не бывает.
img2.canvas.Draw - метод(рисует картинку).
У.Н. Румфорд.
----------------------------------------
http://www.youtube.com/watch?v=qWfIYU9Zzs4 А.К. "Легион"
а как это в программе сделать?И почему движения нет -все какбы запускается компилируется, отображается?img1.top это Y координата верхнего угла картинки относительно верхнего угла формы. ей можно писвоить новое значение.
Код: Выделить всё
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;
type
TForm1 = class(TForm)
img1: TImage;
img2: TImage;
tmr1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Tmr1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
//Описание типов переменных
var
Form1: TForm1;
Dom:tbitmap;//ГРАФИЧЕСКИЙ ОБРАЗ дома
lift:TBITMAP;//ГРАФИЧЕСКИЙ ОБРАЗ лифта
y:integer;//координаты y лифта
shx:integer;//Шаг движения лифта по y
implementation
{$R *.DFM}
//Старт главной формы
procedure TForm1.FormCreate(Sender: TObject);
begin
shx:=6;
//
Dom:=tbitmap.Create;//
lift:=tbitmap.Create;//
//
Dom.LoadFromFile('Dom.bmp');//Загрузить в переменную 'Dom' файл 'Dom.bmp'
//
lift.LoadFromFile('lift.bmp');//Загрузить в переменную 'lift' файл 'lift.bmp'
//
img1.canvas.Draw(0,0,Dom);//
img2.canvas.Draw(60,0,lift);//
end;
//Работа таймера движение лифта
procedure TForm1.tmr1Timer(Sender: TObject);
begin
y:=y+shx;//текущая координата + шаг
if y>500 then shx:=shx*-1;// ограничение справа
if y<0 then shx:=shx*-1;//ограничение слева
img1.canvas.Draw(0,0,Dom);//возобновление фона
img2.canvas.Draw(60,0,lift);//движение корабля
end;
end.
я помню что вы говорили, а вот как уже забыл, и не смог найти в теме, и это же касамоемо пошагового воспроизведения программы,так все и стоит лифт я выставил по центру как опустить в нижнюю часть рамки незнаю.Попробовал AVI воспроизводится чудесно только есть задержка воспроизведения в несколько секунд после компиляции и не получилось растащить его по рамке ,свойства стрейтч там нет(( может какое другое есть?и с какой скоростью двигается? я поставил время таймера 1000 --это должна быть секунда т.е. незримо для глаза он не должен проскочитьпоставив точку останова внутри события таймера
Код: Выделить всё
вот так . только проблемма в чем он не плавно перемещается ,а с 1 го этажа скачком выше 3 го и потом до упора в границу окна программы ,время таймера влияет только на время между этими скачками, shx менял ставил вплоть до 1 --эффекта по моему вообще нет
procedure TForm1.tmr1Timer(Sender: TObject);
begin
img2.top:=y+shx;//òåêóùàÿ êîîðäèíàòà + øàã
if y>500 then shx:=shx*-1;// îãðàíè÷åíèå ñïðàâà
if y<0 then shx:=shx*-1;//îãðàíè÷åíèå ñëåâà
img1.canvas.Draw(0,0,Dom);//âîçîáíîâëåíèå ôîíà
img2.canvas.Draw(60,0,lift);//äâèæåíèå êîðàáëÿ
end;
Код: Выделить всё
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, giveio;
type
TForm1 = class(TForm)
tmr1: TTimer;
img1: TImage;
img2: TImage;
tmr2: TTimer;
tmr3: TTimer;
tmr4: TTimer;
tmr5: TTimer;
procedure FormCreate(Sender: TObject);
procedure Tmr1Timer(Sender: TObject);
procedure tmr2Timer(Sender: TObject);
procedure tmr3Timer(Sender: TObject);
procedure tmr4Timer(Sender: TObject);
procedure tmr5Timer(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
a,b,c:word;
port,base,data:word;
Dom:tbitmap;//ГРАФИЧЕСКИЙ ОБРАЗ дома
lift:TBITMAP;//ГРАФИЧЕСКИЙ ОБРАЗ лифта
procedure TForm1.FormCreate(Sender: TObject);
Begin
base:=$3F8;
InitDriver;
Dom:=tbitmap.Create;//
lift:=tbitmap.Create;//
Dom.LoadFromFile('Dom.bmp');//Загрузить в переменную 'Dom' файл 'Dom.bmp'
//
lift.LoadFromFile('lift.bmp');//Загрузить в переменную 'lift' файл 'lift.bmp'
end;
procedure TForm1.tmr1Timer(Sender: TObject);
begin
port:=base+4;
data:=2;
outport(port,data);
sleep(10);
port:=base+6;
a:=inport(port) and 128;// 3 этаж 1 вывод COM порта DCD
port:=base+6;
b:=inport(port) and 32; // 2 этаж 6 вывод порта DSR
port:=base+6;
c:=inport(port) and 16;//1этаж 8 вывод порта CTS
if b=32 then tmr2.Enabled:=True;
data:=0;
outport(port,data);{aio yoi eae iia ea?aony eeoiaa}
end;
//Работа таймера движение лифта
procedure TForm1.tmr2Timer(Sender: TObject);
begin
img2.top:=img2.top-13;//подъем на 2
if img2.top<442 then tmr2.Enabled:=False;
end;
Есть по современней - PureBasic.FRIM@N писал(а):ну дык может есть что-то попроще и посовременней? я упомянул VB как так считал всегда что он простой,а Com порты еще используются? и что было раньше COM или LPT ?
В PureBasic за это отвечаю функции GetSerialPortStatus и SetSerialPortStatusрулить отдельными выводами порта.
В дельфи можно воспользоваться стандартной функцией EscapeCommFunction (управляет DTR и RTS)FRIM@N писал(а):рулить отдельными выводами порта
Ничего не пропустили я,о ней в этой теме не говорил эта схема= позаимствована здесь только чуть изменена,с ее помощью я хотел управлять реальным лифтом через якобы оптроны,на самом деле просто светодиоды для наглядности.Эге, я все пропустил. А зачем сию схемку собрали? Какую функцию она выполняет?